如何检测重言式注入攻击

时间:2014-12-04 08:29:50

标签: sql sql-injection

我正在开发一种新方法来防止sql注入攻击,其类型是"重言式攻击"。

如何检测Web应用程序中的重言式错误? 我的意思是,我想要一种方法来测试我的方法,最后获得一个显示我的方法能力的统计数据,如显示盲目攻击的Acunetix。

我该怎么做并比较我的方法?

最好的方面

2 个答案:

答案 0 :(得分:2)

重言式:在重言式攻击中,攻击者尝试使用条件查询语句来评估始终为true。攻击者使用WHERE子句注入并将条件转换为始终为真的重言式。最简单的重言式

实施例

       SELECT *FROM Accounts WHERE user=’’or1=1—
      ‘AND pass=’’AND eid=

结果将是帐户表中的所有数据,因为 WHERE子句的条件始终为true。

要检测: 到目前为止,我认为它们没有特定的方法可以检查,但你可以用这样的方式来测试它。(如上所示)

保护:

  1. 始终使用参数化查询
  2. 还限制用户输入特殊字符,如“'”(单引号)和其他用于构建查询的字符。
  3. 希望它有助于!! !!

答案 1 :(得分:1)

您可以在代码中不使用原始SQL来避免整个问题。您至少应该使用参数化查询构建器或存储过程。更好的是,使用像实体框架,PetaPOCO或CakePHP这样的对象关系映射器。

除此之外,如果您希望仅返回一个结果,请使用

  

选择TOP 1

  

LIMIT 1,0

取决于您的数据库。