|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
安全对于所有应用程序来说都是十分重要的。一个简朴应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要。一种常用的攻击方式是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击。 答应用户输入非法的字符会增加用户导致问题的机会。例如,很多应用程序都能够接受用户在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应用程序里这类问题的发生。 返回类别: 教程 上一教程: 用ASP做一个TOP COOL的站内搜索 下一教程: XMLHTTP技术资料 您可以阅读与"在ASP中过滤用户输入 提高安全性"相关的教程: · 提高IIS的安全性 · 与“黑客”的一段遭遇简朴谈ASP的安全性 · 在ASP程序中执行SQL语句的安全性问题 · 综合的判定用户输入的合法性的函数 · 一个提供用户输入时期的绝好程序之(一) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |