On the PDO::准备页面 http://www.php.net/manual/en/pdo.prepare.php它指出,
“并且无需手动引用参数,有助于防止 SQL 注入攻击”
知道了这一点,是否有像 mysql_real_escape_string() 这样的 PHP 函数可以处理 PDO 的转义问题?或者 PDO 会帮我处理所有的转义吗?
EDIT
我现在意识到我问错了问题。我的问题实际上是:“PDO 为我提供什么服务?”我现在通过这些答案意识到,它实际上只是消除了转义引号的需要。但我仍然需要对传递给执行函数的值执行任何其他 PHP 清理调用。比如htmlentities()、strip_tags()...等...
PDO 不会转义变量。变量和 SQL 命令通过 MySQL 连接独立传输。还有SQL 分词器(解析器)从不查看值。值只是逐字复制到数据库存储中,不可能造成任何损害。这就是为什么不需要用准备好的语句来编组数据。
请注意,这主要是速度优势。使用 mysql_real_escape_string(),您首先在 PHP 中编组变量,然后向服务器发送低效的 SQL 命令,这必须再次将实际的 SQL 命令与值分开,成本高昂。这就是为什么人们常说安全优势只是隐含的,而不是使用 PDO 的主要原因。
如果你连接 SQL 命令并且实际上没有使用准备好的语句(不好!),那么是的,PDO 仍然有一个转义函数:$pdo->引用($string) http://www.php.net/manual/de/pdo.quote.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)