这是否为SQL注入打开了大门?

时间:2013-05-07 13:32:43

标签: asp-classic sql-injection

设置我的var:

Foo = request("Bar")

构建SQL查询:

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

我在某个项目中找到了这个,这是否为SQLi打开了大门?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

是的。在将值插入查询之前,您需要清理该值。或者使用参数化查询,这是一个更安全的选项。