PDO和CodeIgniter - 它安全吗?

时间:2012-07-04 17:04:46

标签: php mysql database codeigniter pdo

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

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

3 个答案:

答案 0 :(得分:0)

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

如果写得太套管,您可以授予用户访问权限以编辑其他用户内容。所以没有完全安全的神奇解决方案。您越详细,您的代码就越正确。

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

$int_user_id = 1;

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

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

query()
escape()

答案 1 :(得分: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%。

答案 2 :(得分:-1)

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