gpt4 book ai didi

php - CodeIgniter PDO 驱动程序使用查询而不是准备?这不是更不安全吗?

转载 作者:行者123 更新时间:2023-12-04 05:53:45 24 4
gpt4 key购买 nike

我是 php 的 CodeIgniter 框架的新手,并且正在查看版本 2.1.0 的 PDO 数据库驱动程序。我注意到它使用 PDO 的“查询”功能,而不是“准备”和“bindParam”/“bindValue”。

这不是完全忽略了首先使用 PDO 的意义吗?事实上,与使用它们提供的普通 mysql 驱动程序相比,它对 sql 注入(inject)的保护更少。它似乎不像其他提供的驱动程序那样逃避查询?还是我完全误解了某些东西?

编辑:看起来 CodeIgniter 实际上可能正在使用 PDO::quote 进行清理。但即使是 php 文档也表示不推荐这样做,因为它的安全性较低,而且似乎一开始就错过了 PDO 的要点

最佳答案

我没有使用过 CodeIgniter,所以实际上我不得不对此进行一些研究。事实证明,CodeIgniter 确实提供了一种名为 Query Bindings 的参数化查询。 .
它是这样工作的:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
根据文档:

The secondary benefit of using binds is that the values are automatically escaped, producing safer queries. You don't have to remember to manually escape data; the engine does it automatically for you.


尽管它抽象了准备好的语句功能,但对我来说很奇怪。我认为那几乎是切碎和干燥的。呵呵:/

关于php - CodeIgniter PDO 驱动程序使用查询而不是准备?这不是更不安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com