bindValue 不会转义
我在 php.net 上读到一条评论:
尽管
bindValue()
转义引号,但它不会转义“%”和“_”,因此在使用LIKE
时要小心。如果您自己不转义该参数,则充满 %%% 的恶意参数可能会转储整个数据库。 PDO 不提供任何其他转义方法来处理它。
那么它真的没有转义 % 和 _ 吗?对此最好的解决方案是什么?
I read a comment at php.net:
Although
bindValue()
escapes quotes it does not escape "%" and "_", so be careful when usingLIKE
. A malicious parameter full of %%% can dump your entire database if you don't escape the parameter yourself. PDO does not provide any other escape method to handle it.
So is it really doesn't escape the % and _ ? What could be the best solution for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如评论所说,这实际上只是
LIKE
查询的问题。如何转义这些值取决于您的数据库。如果正常的反斜杠转义有效(如在 MySQL 中),则使用:
或者,最好偷懒,直接删除这些元字符:
As the comment says, it's really only an issue for
LIKE
queries.It depends on your database on how you have to escape those values. If normal backslash escaping works (as in MySQL), then use:
Alternatively it's probably best to be lazy and just strip those meta characters out: