php - PHP PDO的prepared statements如何防止sql注入(inject)?使用 PDO 的其他好处是什么?使用PDO会降低效率吗?

标签 php pdo sql-injection

我发现了句子 PHP PDO's prepared statements prevents SQL injection

  • How does php PDO's(PDO's prepared statements) prevent sql injection?
  • What are other pros/cons of using PDO(PDO's prepared statements)?
  • Does using PDO(PDO's prepared statements) reduce efficiency?

我读过这个:Are PDO prepared statements sufficient to prevent SQL injection? 但那里的数据并不完全清楚。

最佳答案

好吧,乍一看你的问题看起来更复杂,只需要一个链接就可以回答

How does php pdo's prepared statements prevent sql injection?

How can prepared statements protect from SQL injection attacks?

What are other pros/cons of using PDO?

最有趣的问题。
PDO 最大的缺点是:它被兜售和传播为一颗银弹,另一个崇拜的偶像。
如果不理解,它就没有任何用处,就像任何其他工具一样。
PDO 具有一些关键特性,例如

  • 数据库抽象。这是一个神话,因为它不会改变 SQL 语法本身。而且您根本不能在 Postgre 中使用 mysql 自动递增的 id。更不用说切换数据库驱动程序并不是开发人员经常做出的决定。
  • 占位符支持,实现 native 准备好的语句或模拟它们。很好的方法,但非常有限。缺少必要的占位符类型,例如标识符或 SET 占位符。
  • 一种无需编写循环即可将所有记录放入数组的辅助方法。只有一个。当您需要至少 4 项才能使您的工作变得明智且不那么无聊时。

Does using PDO reduce efficiency?

再说一遍,降低效率的不是PDO,而是prepared statements。 这取决于数据库服务器和您的应用程序之间的网络延迟,但对于大多数真实情况,您可以认为它可以忽略不计。

关于php - PHP PDO的prepared statements如何防止sql注入(inject)?使用 PDO 的其他好处是什么?使用PDO会降低效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718942/

相关文章:

php - 必需的 @OA\Info() 未找到异常在 laravel 8.x 中不起作用

php - filter_var 是个好方法吗?

xss - PCI-DSS 扫描的漏洞报告

PHP 从字符串中删除 URL

php - 使用 PHP OOP 管理数据库

mysql - 用户默认值 - Objective-C

php - 在带有 PHP5.3.6 的 LAMP 上启用 MsSQL PDO 驱动程序

php - 使用查询绑定(bind) Fuelphp

hibernate - 是否可以在grails中进行sql注入(inject)

java - 保护静态 SQL 查询免遭 SQL 注入(inject)