我是一名Web应用程序开发人员,使用经典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)) & "'"
这可能是一种平庸,但我从未发现过一种有效的攻击方式。
答案 0 :(得分:0)
我总是找到“sqli helper 2.7”(你可以下载它)来查找大部分/全部SQL注入。我不确定这是否会有所帮助,但它至少会帮助测试所有SQL注释和所有内容。我记得在我的一个网站上发现了一个主要的SQL注入来愚弄我的所有数据库数据。这不是你想要的,但它可能能找到一条出路。
答案 1 :(得分:-3)
对于以这种方式清理的输入,没有正常的SQL注入。缺点是从数据库中检索数据,你需要替换双撇号。
sDataRetrievedFromDatabase = Replace(sDataRetrievedFromDatabase, "''", "'")