是否有可能使用gzcompress(以及从数据库中检索后的gzuncompress)函数来防止mysql注入?或者有什么原因导致这行不通?还是说这根本就不是一个好主意?
这是个坏主意,因为
-
理论上,可能存在一个数据序列,当压缩时,会导致SQL注入或简单地中断查询
-
gz压缩数据不能正确索引和搜索-你将有一个充满乱码字符的数据库
-
gzcompression计算开销大
在将数据输入数据库之前,总是使用库(如mysql(i)_real_escape_string()
)的字符串转义方法或参数化查询对数据进行净化。
要防止SQL注入攻击,请使用PDO的参数化查询
SQL注入可以通过两种方法中的一种来防止。您可以使用参数化查询,也可以在构建SQL语句时正确地清理值。
现在,您的建议可能会阻止恶意的注入数据库,但这并不能消除将SQL语法错误(有效的SQL注入)引入SQL语句的可能性。
此外,通过使用压缩函数,它将消除不通过解压缩来查看或搜索数据库内容的可能性。
这是一种避免SQL注入的新方法,但会给您带来比它实际解决的更多的问题。你真的需要坚持那些行之有效的解决方案。
- OWASP - SQL注入
- Steve Friedl的Unixwiz.net技术提示- SQL注入攻击示例 MSDN - SQL注入