设置我的var:
Foo = request("Bar")
构建SQL查询:
John.Source = "SELECT ID, Name FROM dbo.USER where Name = '"&Foo&"' and ID = '1'"
我在某个项目中找到了这个,这是否为SQLi打开了大门?
答案 0 :(得分:7)
绝对。 request("Bar")
将从Request.QueryString
或Request.Form
集合中获取参数。
这意味着您可以在理论上将以下内容标记为查询字符串:
'; delete * from dbo.USER; select * from user where name='
这将为您提供
的查询SELECT ID, Name FROM dbo.USER where Name = ''; delete * from dbo.USER; select * from user where name='' and ID = '1'
正如其中一位评论者所说,改为使用参数化查询。
如果这确实不是一个选项,那么一定要转义从Request集合中获取的值。此链接可能有所帮助:http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx
答案 1 :(得分:2)
是的。在将值插入查询之前,您需要清理该值。或者使用参数化查询,这是一个更安全的选项。