【发布时间】:2012-02-02 05:03:39
【问题描述】:
我正在使用 ezSQL PHP 类进行 MySQL 查询。由于我的所有查询都通过$ezsql->query() 函数,我认为最好实现一种方法来阻止来自$ezsql->query() 的常见SQL 注入技术。
例如,最常见的可能是1=1。所以这个正则表达式应该能够阻止它的所有变体:
preg_match('/(?:"|\')?(\d)(?:"|\')?=(?:"|\')?\1(?:"|\')?/',$query);
这将阻止 "1"="1"、'1'=1、1=1 等。
这是个好主意吗?如果有,还有哪些其他常见的模式?
编辑:忘了提,我确实使用验证和卫生。这只是一个额外的预防措施。
【问题讨论】:
-
一个更好的主意是使用一些允许你做准备好的语句+参数绑定的东西,这将完全避免最常见的攻击。
标签: php mysql sql regex sql-injection