这是一个创建于 3876 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近发现自己写的数据库类掉坑了。主要是当时没细看官方文档,PDO在默认情况下,会先执行预编译,失败后就选择本地模拟。
网上也没说这样有什么危险性。所以我想知道,当本地模拟预编译时,攻击者会有什么手段攻击呢?找了很多资料,都没说到有什么攻击手段。
至于掉坑,是掉这样的坑的:
SELECT * FROM table WHERE title LIKE :q OR text LIKE :q
$sth->bindValue(':q', "$q", PDO::PARAM_STR);
当时写的SQL语句没注意 本地模拟和 真正预编译。 然后当我发现后,切换到真正预编译,上述语句就全出问题了= =。
唉。现在纠结要么重构,要么将就用本地模式,但害怕出安全问题呀。
第 1 条附言 · 2014-08-22 11:59:31 +08:00
后面找到一个类似的攻击手段:
大概提交一些特殊的字节字段,可以产生攻击。
3 条回复 • 2014-08-22 22:48:04 +08:00
 |
|
1
kimmykuang 2014-08-22 14:45:13 +08:00
好像我之前用PDO都是上来先把本地模拟关掉的
|
 |
|
2
wdd2007 2014-08-22 14:50:49 +08:00
切换到真正预编译,上述语句就全出问题了? 出什么问题了呀?
|