1

设置我的变量:

Foo = request("Bar")

构建 SQL 查询:

John.Source = "SELECT ID, Name FROM dbo.USER where Name = '"&Foo&"' and ID = '1'"

我在某人的项目中发现了这个,这是否为 SQLi 打开了大门?

4

2 回答 2

7

绝对地。将从或集合中request("Bar")取出参数。Request.QueryStringRequest.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

于 2013-05-07T14:10:06.337 回答
2

是的。您需要在将值插入到这样的查询之前对其进行清理。或者使用参数化查询,这是一个更安全的选择。

于 2013-05-07T14:10:36.363 回答