-1

我是一名 Web 应用程序开发人员,使用 Classic ASP 作为服务器端脚本。

我总是通过使用一个简单的函数将字符串参数的单撇号加倍来保护我的应用程序免受 SQL 注入。

Function ForSQL(strString)  
  ForSQL = Replace(strString, "'", "''")  
End Function

对于数字参数,我使用 CInt、CLng 和 CDbl 函数。

我经常写串联查询;我并不总是使用存储过程,也不总是验证用户输入。

我想问你是否有人可以向我展示针对这行代码的有效攻击:

strSQL = "SELECT Id FROM tUsers WHERE Username='" & _
         ForSQL(Left(Request.Form("Username"),20)) & "' AND Password='" & _ 
         ForSQL(Left(Request.Form("Username"),20)) & "'"

这可能是一种平庸,但我从未发现一种有效的攻击方式。

4

2 回答 2

0

我总是找到“sqli helper 2.7”(你可以下载它)来查找大多数/所有 SQL 注入。我不确定这是否会有所帮助,但它至少有助于测试所有 SQL 注释和所有内容。我记得在我的一个网站上,它发现了一个主要的 SQL 注入来使我的所有数据库数据变得哑巴。这并不完全是您正在寻找的东西,但它可能能够找到解决方法。

于 2012-04-15T02:16:31.507 回答
-3

以这种方式净化的输入没有有效的 SQL 注入。缺点是从数据库中检索数据是您必须替换双撇号。

sDataRetrievedFromDatabase = Replace(sDataRetrievedFromDatabase, "''", "'")
于 2012-04-12T22:15:59.903 回答