MySQLi准备好的语句足以防止SQL注入吗?

这里提出了一个兄弟问题。 我正在寻求特定于MySQLi扩展的观点。

在链接的兄弟问题中,解释结论是否定的,PDO准备的语句不足以防止SQL注入。 某些边界案例和PDO设置容易受到SQL注入的影响。

我的问题是,MySQLi准备好的语句100%足以防止SQL注入,还是它也有我们需要更新以确保安全的某些设置?

谢谢你的帮助!


准备好的语句是服务器功能,而不是客户端库功能。 每个用于PHP的mysql客户端库 - pdo,mysql和mysqli - 都使用libmysqlclient库并依赖它来获取功能。 PDO是唯一添加了模拟准备语句概念的库。

所有关于使用准备语句的安全性的讨论均适用于所有客户端库。 (当PDO使用模拟预处理语句并且您将数据保存在gbk字符集中时,并且您与服务器和客户端库中的字符集设置不匹配(顺便说一下,这是针对addslashes的唯一已知弱点))


是的,准备好的语句足以防止SQL注入,但前提是您始终使用它们。

不,预准备语句不足以阻止SQL注入,因为并非所有语句都是可参数化的,例如某些set命令,但是这可以通过白名单和/或regexp来缓解。

链接地址: http://www.djcxy.com/p/93771.html

上一篇: Are MySQLi Prepared Statements sufficient to prevent SQL injection?

下一篇: PDO prepared Statements correct?