我想知道那些准备好的 PDO 语句是否真的提高了安全性,或者它们只是查询中的“廉价”文本替换。准备好的语句的要点实际上是,无论作为参数插入什么,都不会被 DBMS 解析为指令本身的一部分,因此像这样的参数
"'; DROP TABLE foobar;"
没有任何影响并且不会破坏查询。有谁详细了解这个吗?我想将 PDO 与准备好的语句一起使用来防止 sql 注入。事实证明它们很难使用(甚至不起作用,至少在我的本地机器上),所以我想在浪费更多时间在 PDO 上之前找到这一点;-)
创建准备好的语句将带有通配符的查询发送到服务器进行解析,并返回一个令牌来调用该语句。
调用仅涉及发送绑定到每个参数的数据。这意味着不会解析数据(因为它不是查询字符串的一部分),并且在解析准备好的语句时查询的结构是固定的,并且不能通过注入更改。
所以,是的,准备好的声明肯定会提高安全性。
这也意味着如果您为多个请求重复使用准备好的语句,则不必承担解析开销。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)