我正在为MySQL查询使用ezSQL PHP类。由于我的所有查询都通过$ezsql->query()
函数,所以我认为实现一种方法来阻止$ezsql->query()
中的常用SQL注入技术是个好主意。检测查询中的常见SQL注入模式
例如,最常见的可能是1=1
。所以这个正则表达式应该能够阻止所有的变化:
preg_match('/(?:"|\')?(\d)(?:"|\')?=(?:"|\')?\1(?:"|\')?/',$query);
这将阻止"1"="1"
,'1'=1
,1=1
等
这是一个好主意?如果是这样,还有其他一些常见模式?
编辑:忘了提及,我确实使用验证和卫生。这只是一个额外的预防措施。
一个更好的想法是使用允许你做准备语句+参数绑定的东西,这样可以完全避免最常见的攻击。 – Amber 2012-02-02 05:07:01