2011-01-05 54 views
3

我得到了一个网站,解决最近使用SQL注入攻击的问题。从我可以收集的Havij自动SQL注入器被用来插入代码到URL的查询字符串参数中。SQL注入筛选器URL查询字符串 - PHP

该网站是一个自定义的CMS内置和有点过时。我认为不可能完全重建。

防止这种情况再次发生的最好方法是什么?我是一名PHP开发人员,但通常只是在表单上进行验证,或者使用已经内置此功能的系统 - wordpress,codeigniter,drupal等。

任何想法或想法都会被赞赏。

感谢

回答

3

只有一个简单的规则:变量(不要紧,它是从哪里来的 - 从用户或者是从数据库中已经得到的东西)正被放入SQL查询应之前用mysql_real_escape_string()进行消毒。

或者你可以使用准备好的查询(准备好的语句/占位符),没关系。

+0

完美,谢谢! – Robimp 2011-01-05 13:38:07

+0

那么,任何引用的变量(字符串)。不要在整数和浮点数上运行MRES,只需将它们添加到查询中即可:'AND AND id ='。 (int)$ id' – ircmaxell 2011-01-05 13:41:57

+0

@ircmaxell:确实,只是不想让OP的事情变得复杂。 – zerkms 2011-01-05 13:48:15

2

您可能无法更改所有代码,但也许可以更改数据库代码。如果是这样,请尝试使用PDO并准备好语句。我推荐pdo,因为您没有指定数据库类型。如果您使用的是mysql,我认为mysqli也提供了准备好的语句。

+0

是的,我只是在变量到达数据库之前对变量使用了mysql_real_escape_string()函数。不如我想象的那么快乐/工作。感谢你的回答。 – Robimp 2011-01-05 14:05:03

+0

@Robimp没问题,很高兴我可以帮忙。 – AntonioCS 2011-01-05 15:15:37