设置我的变量:
Foo = request("Bar")
构建 SQL 查询:
John.Source = "SELECT ID, Name FROM dbo.USER where Name = '"&Foo&"' and ID = '1'"
我在某人的项目中发现了这个,这是否为 SQLi 打开了大门?
设置我的变量:
Foo = request("Bar")
构建 SQL 查询:
John.Source = "SELECT ID, Name FROM dbo.USER where Name = '"&Foo&"' and ID = '1'"
我在某人的项目中发现了这个,这是否为 SQLi 打开了大门?
绝对地。将从或集合中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
是的。您需要在将值插入到这样的查询之前对其进行清理。或者使用参数化查询,这是一个更安全的选择。