在ASP中过滤用户输入 提高安全性

news/2024/7/3 6:39:15

安全对于所有应用程序来说都是十分重要的。一个简单应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要。一种常用的攻击方法是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击。

 
允许用户输入非法的字符会增加用户导致问题的机会。例如,很多应用程序都能够接受用户在SQL命令里增加的WHERE子句。恶意用户会通过向其输入的信息里增加额外命令的方法,来执行数据库服务器上的代码。例如,他们不是输入“Smith”,将其作为检索字符串,而是输入“Smith'; EXEC master..xp_cmdshell 'dir *.exe”。

下面这段代码是设计用来处理从服务器返回的多个Recordset的。用户的输入会包含一个额外的、未预料的的执行命令。当NextRecordset方法被调用的时候,潜藏的恶意代码就会被执行。

这一攻击可以通过过滤掉用户输入信息中的非法字符(在注释段里)来避免。这样做了之后,用户的输入仍然被允许处理,但是清除掉了所有的非法字符。

Dim rst As Recordset
Dim rst2 As Recordset
Dim strUserInput As String

strUserInput = "Smith';EXEC master..xp_cmdshell 'dir *.exe"

'Filter input for invalid characters
strUserInput = Replace(strUserInput, "<", vbNullString)
strUserInput = Replace(strUserInput, ">", vbNullString)
strUserInput = Replace(strUserInput, """", vbNullString)
strUserInput = Replace(strUserInput, "'", vbNullString)
strUserInput = Replace(strUserInput, "%", vbNullString)
strUserInput = Replace(strUserInput, ";", vbNullString)
strUserInput = Replace(strUserInput, "(", vbNullString)
strUserInput = Replace(strUserInput, ")", vbNullString)
strUserInput = Replace(strUserInput, "&", vbNullString)
strUserInput = Replace(strUserInput, "+", vbNullString)
strUserInput = Replace(strUserInput, "-", vbNullString)

Set rst = New Recordset
rst.ActiveConnection = "PROVIDER=SQLOLEDB;DATA SOURCE=SQLServer;" & _
                       "Initial Catalog=pubs;Integrated Security=SSPI"
rst.Open "Select * from authors where au_lname = '" & strUserInput & _
         "'", , adOpenStatic
'Do something with recordset 1

Set rst2 = rst.NextRecordset()
'Do something with recordset 2

在用户的输入中嵌入命令也是攻击ASP Web应用程序的一种常见手法,也叫做跨网站脚本攻击。过滤输入的内容并使用Server.HTMLEncode和Server.URLEncode这两个方法会有助于防止你ASP应用程序里这类问题的发生。


http://www.niftyadmin.cn/n/4076672.html

相关文章

通过 Powershell 来替换 ARM 模式下虚拟机的网络接口

需求描述 客户在部署完 ARM 模式的虚拟机以后&#xff0c;由于误操作在虚拟机内部禁用了网卡导致远程访问虚拟机受到限制&#xff0c;以下是通过 Powershell 命令来替换原有虚拟网络接口实现虚拟网卡重置功能。 Note 本文只限于 ARM 模式下的虚拟机&#xff0c;经典模式的虚拟机…

Microsoft Visual Studio 发展历史

Microsoft Visual Studio&#xff08;简称VS&#xff09;是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集&#xff0c;它包括了整个软件生命周期中所需要的大部分工具&#xff0c;如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软…

把数据插入到数据库的两种方法

把表单中的数据插入到数据库中有两种方法。1.直接使用sql语句的 优点&#xff1a;速度快&#xff0c;不耗资源 缺点&#xff1a;不能传递太长的字段内容&#xff0c;字段比较多时不易排错。 推荐有经验的编程者优先考虑. 具体操作&#xff1a; 假设表单中有以下…

kali linux中goldendict查词慢的问题

2021年3月30日 在kali linux中安装goldendict 我默认使用的还是kali的官网的源 apt install goldendict下载后打开&#xff0c;添加有道词典的来源&#xff0c;并进行启用 添加完成后进行搜索&#xff0c;但是网页结果迟迟不出来&#xff0c;我就发现大事不妙&#xff0c;但我…

sklearn调包侠之KNN算法

天下武功&#xff0c;唯快不破。今天就正式讲解如何通过《sklearn小抄》武林秘籍&#xff0c;成为一代宗师调包侠。欲练此功&#xff0c;必先自宫&#xff1b;就算自宫&#xff0c;未必成功&#xff1b;若不自宫&#xff0c;也能成功。传说江湖&#xff08;机器学习领域&#x…

ARM 虚拟机使用同一个公共 IP 访问公网的解决方案

Azure 目前有两种部署模型&#xff1a;资源管理器 ARM 和经典部署模型 ASM。ASM 的虚拟机默认公用云服务的 VIP 来访问 Internet&#xff0c;ARM 的虚拟机默认使用自己的公共 IP 访问 Internet。因为有的服务器有访问白名单的设置&#xff0c;因此有的客户可能想实现的一个需求…

搭建wamp+sqli-labs教程win10虚拟机2021/4/2

wamp安装 下载wamp&#xff0c;没啥好说的&#xff0c;在官网下载&#xff0c;我看也有人用phpstudy&#xff0c;都可 wamp官网 安装过程中遇到报错 msvcr120.dll报错 查询原因&#xff0c;缺少VC环境&#xff0c;下载了VC运行库集合&#xff0c;一步到位&#xff0c;但是我提…

python-greenlet模块(协程)

from greenlet import greenletdef test1():print(12)gr2.switch()print(34)gr2.switch() def test2():print(56)gr1.switch()print(78)gr1 greenlet(test1)#启动一个协程 gr2 greenlet(test2)#启动一个协程 gr1.switch()#switch是协程切换高并发&#xff0c;单线程的实现上万…