Codeigniter中的PDO - 保护vs SQL注入

csi*_*csi 9 php pdo sql-injection codeigniter prepared-statement

真正的PHP安全专家,PDO是可行的方式,还是我可以使用Codeigniter的Active Record类?

我已经阅读了http://codeigniter.com/forums/viewthread/179618/并且并非100%确信.
我通常依靠Chris Shiflett和OWASP等专家来获取安全提示. http://shiflett.org/blog/2006/jul/the-owasp-php-top-5

使用自制的PDO DB类代替Codeigniter数据库文件.每次我上传它都是一个相对较小的痛苦复制.我使用PDO的主要原因是为了防止SQL注入与使用Active Record.

编辑: 不是一个人,但我写了一篇关于如何在Codeigniter中集成PDO的事实 .如果有人有反馈,我会很高兴听到.

You*_*nse 9

那么,对于这类问题,我们有一个通用的答案:

它不是魔杖,而是巫师.

(不知道我在哪里得到那个说法,但似乎我只有一个人使用它,但很可能我拼错了)

技术本身没有任何好处或坏处.
一切都取决于使用它的手.

  1. 如果使用得当,mysql中没有任何不安全因素.
  2. PDO并不是一个神奇的盾牌,它只能通过它的存在覆盖你所有的危险.

每当我看到SQL注入的蹩脚谈话时,它总是只关注动态数据.
虽然大多数危险来自其他查询部分 - 比如动态标识符.PDO可以做的事情比没有什么可以处理它们.

所以,没有一定的答案.
只要您了解自己在做什么,就可以使用自己喜欢的任何技术.
相反,如果您不了解它是如何工作的,但只是相信某些技术可以帮助您保护您的应用,那么您已经遇到了麻烦.

而已.


Tom*_*Tom 6

根据您引用的页面,Active Record类使用mysql_函数进行字符串转义.这意味着它仍然在PHP-land中构建SQL字符串,而不是在数据库中使用参数化API.虽然它现在可能没有已知缺陷,但使用遵循更安全设计的API仍然是一个更好的主意.