正确的SQL注入测试方法

时间:2012-05-20 13:16:18

标签: mysql sql database security cakephp

您好我正在开发一个网站并进行一些渗透测试。它是在CakePHP中构建的,它让我意识到:

  

如果您使用,CakePHP已经保护您免受SQL注入   CakePHP的ORM方法(如find()和save())和正确的数组   符号(即数组('field'=> $ value))而不是原始SQL。

但是我不确定在输入表单字段中输入什么数据以测试SQL注入预防。

我有以下表名,带有简单的VARCHAR属性 -

 categories: name
 clients: address, county, country, name
 items: name
 statuses: name

这个SQL语句输入表单并提交是否是测试SQL注入尝试的正确方法?

DROP TABLE "categories";

在表单上提交后,输入数据库的值为:

DROP TABLE "categories"; 

我是否可以认为这意味着网站已被保护免受SQL注入攻击,因为它没有删除数据库中的类别表?

3 个答案:

答案 0 :(得分:0)

当您的代码未使用How can I test my web site for SQL injection attacks?中的参数化query.SQL注入工具时发生SQL注入攻击。

答案 1 :(得分:0)

很好的问题,但答案太多了,不能作为答案。我建议进行一些搜索并阅读许多可以了解更多内容的网站。

这里有很好的工具清单:http://www.darknet.org.uk/tag/sql-injection-tool/

答案 2 :(得分:0)

请记住,几乎所有自动sql注入扫描工具只能找到最简单的漏洞形式,并且错过了这个问题的大多数实际情况。

一位受过良好教育且经验丰富的人类攻击者/测试人员将始终能够更好地完成工作,并找到工具所不具备的一系列sqli问题。

然而...... SQL注入是最简单的webapp漏洞之一。因此,如果您有权访问源,只需读取它并确保它正确使用绑定参数或存储过程,并且永远不会通过将字符串附加在一起来构建SQL命令。如果您看到类似

的内容
sql = 'select col from table where x=' + variable
然后警报应响起。 阅读和调整源代码几乎肯定会比尝试执行需要多年经验掌握的测试类型更快,更容易,更有效。

请参阅https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet