何时避免使用预准备语句
防止 SQL 注入攻击的常见做法是使用预准备语句。但是,在某些情况下,准备好的语句可能不是最合适的选项。
在这种特定情况下,开发人员正在重新设计一个使用基本查询(例如 SELECT foo,bar FROM baz WHERE quux)的 Web 应用程序= ? ORDER BY bar LIMIT 1. 这些查询仅在每个页面点击时执行一次。此外,开发人员处于托管环境中,希望避免额外的服务器负载。
考虑到这些因素,开发人员质疑是否有必要使用准备好的语句。
答案
要确定是否应该避免准备好的语句,必须考虑准备好的语句提供两个主要好处:
在这种特定场景中,开发人员不关心查询重用,因为每个查询仅在每次页面点击时执行一次。因此,查询重用的性能优势可以忽略不计。
但是,注入预防方面仍然是一个问题。为了解决这个问题,开发人员可以考虑使用模拟准备语句。这些语句使用 PHP 函数来处理引用和参数替换,提供针对 SQL 注入的保护,而无需多次数据库往返的开销。
建议
基于信息不过,建议避免使用准备好的语句,而是选择模拟的准备好的语句。这种方法提供了针对 SQL 注入的保护,同时避免了真正准备好的语句会产生的额外数据库往返。
以上是托管环境中的单执行查询是否应该避免使用准备好的语句?的详细内容。更多信息请关注PHP中文网其他相关文章!