0

我听说(感谢 SO)mysql_* 系列函数容易受到 SQL 注入的影响,因此始终建议使用mysqli_* OR PDO 方法。

因此,我试图找出 Codeigniter 中使用了哪些方法,因为我已经使用 CI 4 个月了。但我无法把它弄出来。

谁能告诉我 CI 中使用了哪些方法或任何其他方法?

提前致谢。

4

1 回答 1

7

CodeIgniter 根据您的config/database.php文件使用您选择的任何方法。例如,如果您选择mysqli作为驱动程序,它将使用mysqli函数族。如果选择mysql,它将使用mysql家庭,依此类推。

有一个 PDO 驱动程序,但它不是当前版本中世界上最稳定的东西。

如果您在 CodeIgniter 中使用“活动记录”函数(实际上应该称为“查询构建器”函数,因为它们不遵循活动记录模式),那么您的所有数据都会使用适当的函数自动清理。例如,如果您说 ,$this->db->where('field', $value)并且您正在使用mysqli驱动程序,CodeIgniter 将自动调用您传递给它mysqli_real_escape_string的输入,从而使查询安全。$value

我还应该注意,这种自动清理仅适用于活动记录帮助器功能,例如$this->db->get等。如果您尝试使用 then 运行自己的查询,$this->db->query("SELECT * FROM table WHERE field = '" . $field . "'")则需要注意保护自己,因为您绕过了 CodeIgniter 的安全机制。直接使用该query()方法运行查询就像在说“别担心,我知道我在做什么”。您需要专门要求 CodeIgniter 通过调用$this->db->escape()或其相关函数为您清理某些值。如果您只是将变量连接到查询中,那么您将对 SQL 注入敞开心扉。

于 2013-01-25T04:48:37.103 回答