我是一名 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)) & "'"
这可能是一种平庸,但我从未发现一种有效的攻击方式。