我正在开发一种新方法来防止sql注入攻击,其类型是"重言式攻击"。
如何检测Web应用程序中的重言式错误? 我的意思是,我想要一种方法来测试我的方法,最后获得一个显示我的方法能力的统计数据,如显示盲目攻击的Acunetix。
我该怎么做并比较我的方法?
最好的方面
答案 0 :(得分:2)
重言式:在重言式攻击中,攻击者尝试使用条件查询语句来评估始终为true。攻击者使用WHERE子句注入并将条件转换为始终为真的重言式。最简单的重言式
实施例
SELECT *FROM Accounts WHERE user=’’or1=1—
‘AND pass=’’AND eid=
结果将是帐户表中的所有数据,因为 WHERE子句的条件始终为true。
要检测: 到目前为止,我认为它们没有特定的方法可以检查,但你可以用这样的方式来测试它。(如上所示)
保护:
希望它有助于!! !!
答案 1 :(得分:1)
您可以在代码中不使用原始SQL来避免整个问题。您至少应该使用参数化查询构建器或存储过程。更好的是,使用像实体框架,PetaPOCO或CakePHP这样的对象关系映射器。
除此之外,如果您希望仅返回一个结果,请使用
选择TOP 1
或
LIMIT 1,0
取决于您的数据库。