我写了一个博客系统,除了一件小事以外,效果很好。我正在使用mysqli::real_escape_string
来防止系统暴露于SQL注入。但是,如果有人在其中写了带有“或”的注释,则这些注释将显示为\“或\”,这不完全是用户友好的。
有没有办法防止这些被写入,或者在用PHP回应之前删除它们?
答案 0 :(得分:0)
在你的情况下,逃逸发生两次(可能是因为启用了设置“magic_quotes_gpc = On”)
示例:
Is your name O'reilly?
当此参数传输浏览器(客户端) - > php(web-server)with magic_quotes_gpc = on
Is your name O\'reilly?
然后你的代码mysqli_real_escape_string
Is your name O\\\'reilly?
结果存储在表格中:
Is your name O\'reilly?
Сonclusion:
过时的设置«magic_quotes_gpc»要禁用。
请注意。 在这种情况下,当sql查询更便于使用«prepared statements»时,为防止SQL注入,参数不需要转义。