当使用PDO quote()时,SQL注入是否可能?


Is SQL Injection possible when using PDO quote()?

我有以下代码(它的简单版本):

$query = "SELECT *
FROM text
WHERE MATCH (text) AGAINST ('".$pdo->quote($_GET["q"])."' IN BOOLEAN MODE);";

是否有任何方法可以克服quote()函数并将SQL注入查询-或者quote()是100%安全的?

非常感谢!

PDO::quote()在输入字符串周围加上引号(如果需要),并且在输入字符串中转义特殊字符,使用适合的引号样式。

所以它看起来可以防止SQL注入。尽管,准备好的语句保证了SQL注入保护,我们可以从PHP手册中读到:

如果您使用这个函数来构建SQL语句,强烈建议您使用PDO::prepare()来准备带有绑定参数的SQL语句,而不是使用PDO::quote()将用户输入插入到SQL语句中。带有绑定参数的准备语句不仅更便携、更方便,而且不受SQL注入的影响,而且执行起来比插入查询快得多,因为服务器端和客户端都可以缓存查询的编译形式。

您可以在http://php.net/manual/en/pdo.quote.php

阅读更多相关内容