关于 PDO 中的本地模拟和真正预编译的安全问题

2014-08-22 11:11:13 +08:00
 lazyphp
最近发现自己写的数据库类掉坑了。主要是当时没细看官方文档,PDO在默认情况下,会先执行预编译,失败后就选择本地模拟。
网上也没说这样有什么危险性。所以我想知道,当本地模拟预编译时,攻击者会有什么手段攻击呢?找了很多资料,都没说到有什么攻击手段。

至于掉坑,是掉这样的坑的:
SELECT * FROM table WHERE title LIKE :q OR text LIKE :q
$sth->bindValue(':q', "$q", PDO::PARAM_STR);
当时写的SQL语句没注意 本地模拟和 真正预编译。 然后当我发现后,切换到真正预编译,上述语句就全出问题了= =。
唉。现在纠结要么重构,要么将就用本地模式,但害怕出安全问题呀。
3444 次点击
所在节点    PHP
3 条回复
kimmykuang
2014-08-22 14:45:13 +08:00
好像我之前用PDO都是上来先把本地模拟关掉的
wdd2007
2014-08-22 14:50:49 +08:00
切换到真正预编译,上述语句就全出问题了? 出什么问题了呀?
lazyphp
2014-08-22 22:48:04 +08:00
@wdd2007 参数绑定只能唯一的。不能同时绑定两个。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/129284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX