3

我以前没有任何 PDO 经验,所以我的问题可能听起来太简单了。
我听说 PDO 在安全性方面比 mysql/mysqli 好几次,而且由于 Codeigniter 支持 PDO 驱动程序,我决定在我的新项目中进行更改。

但正如我所知,Codeingiter 不使用准备好的语句,并且(我认为)它错过了使用 PDO 的意义,这是正确的,并且它不安全吗?
所以我的问题是:使用带有codeigniter的PDO驱动程序被认为是不安全的吗?
而且,这是否意味着我必须自己照顾基本的安全?

4

3 回答 3

1

所有查询调用都在简化函数中转义$this->db,例如delete()get_where()。这增加了一些自动化的安全性。

如果写得太草率,您可以授予用户访问权限以编辑其他用户的内容。因此,完全安全没有神奇的解决方案。您越详细,您的代码就越适合您。

如果您需要自定义查询,您可以这样做:

$int_user_id = 1;

$this->db->query("
SELECT *
FROM users
WHERE id = ?
", array($int_user_id));

注意:要实现IN ()and LIKE,您需要相应地转义,而不是通过array()and插入?

查询()
转义()

于 2012-07-05T06:58:31.423 回答
0
 1. Database Support

PDO 相对于 MySQL 的核心优势在于其对数据库驱动程序的支持。PDO 支持许多不同的驱动程序,如 CUBRID、MS SQL Server、Firebird/Interbase、IBM、MySQL 等。

 2. Security

这两个库都提供 SQL 注入安全性,只要开发人员按照预期的方式使用它们。建议将准备好的语句与绑定查询一起使用。

 3. Speed

虽然 PDO 和 MySQL 都非常快,但 MySQL 在基准测试中的执行速度却微不足道——非准备语句约为 2.5%,准备语句约为 6.5%。

于 2012-07-14T09:50:22.110 回答
-1

据我所知(CodeIgniter newbie ;))它使用 ActiveRecords 很好地处理了安全问题。我不知道它是否使用 PDO,但它非常易于使用,查询看起来非常干净,并且具有查询缓存。

于 2012-07-04T17:09:10.000 回答