3

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

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

但是,我不确定要在我的输入表单字段中输入哪些数据以测试 SQL 注入预防。

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

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

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

DROP TABLE "categories";

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

DROP TABLE "categories"; 

我可以假设这意味着该网站已被保护免受 SQL 注入尝试,因为它没有删除我数据库中的类别表吗?

4

3 回答 3

0

当您的代码未使用参数化查询时发生 SQL 注入攻击。如何测试我的网站是否存在 SQL 注入攻击中的 SQL 注入工具?.

于 2012-05-20T13:28:08.183 回答
0

好问题,但答案太多了,无法作为答案。我建议进行一些搜索并阅读许多出现的网站以了解更多信息。

不错的工具列表:http ://www.darknet.org.uk/tag/sql-injection-tool/

于 2012-05-20T13:29:54.427 回答
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

于 2012-05-21T10:47:41.873 回答