Asp classic 正在寻找SQL注入演示

Asp classic 正在寻找SQL注入演示,asp-classic,sql-injection,Asp Classic,Sql Injection,我是一名web应用程序开发人员,使用经典ASP作为服务器端脚本 我总是通过使用一个简单的函数将字符串参数的单撇号加倍来保护我的应用程序不受SQL注入的影响 Function ForSQL(strString) ForSQL = Replace(strString, "'", "''") End Function 对于数值参数,我使用CInt、CLng和CDbl函数 我经常写连接查询;我并不总是使用存储过程,也不总是验证用户输入 我想问您是否有人可以向我展示针对这行代码的有效攻击:

我是一名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)) & "'"

这可能是一种陈词滥调,但我从未发现一种有效的攻击。

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

sDataRetrievedFromDatabase = Replace(sDataRetrievedFromDatabase, "''", "'")

我总是找到“sqli helper 2.7”(您可以下载它)来查找大多数/所有SQL注入。我不确定这是否会有帮助,但它至少会帮助测试所有SQL注释和所有内容。我记得在我的一个网站上,它发现了一个主要的SQL注入来屏蔽我所有的数据库数据。这并不完全是你想要的,但它可能会找到一条出路。

我问了一个类似的问题:对不起,我不明白你的答案。我是意大利人,也许我不能正确地理解英语。你能举例说明吗?我看到你的例子了。但我不明白为什么我必须将双撇号替换为单撇号。当我在数据库中写入双apos时。。。它只考虑了一个。以我的经验,情况并非如此。当我返回数据时,我需要执行此替换以将数据返回到单个撇号。使用MS SQL Server,如果在Temp(字段1)(“”)中插入数据,DB只保存一个单引号。如果选择*FROM Temp,则结果仅为“(一个引号,而不是两个)。。。所以不需要更换…这是不正确的。请参阅李斯特先生作为问题评论发布的链接,以获取一些示例。