我听说(感谢 SO)mysql_* 系列函数容易受到 SQL 注入的影响,因此始终建议使用mysqli_* OR PDO 方法。
因此,我试图找出 Codeigniter 中使用了哪些方法,因为我已经使用 CI 4 个月了。但我无法把它弄出来。
谁能告诉我 CI 中使用了哪些方法或任何其他方法?
提前致谢。
我听说(感谢 SO)mysql_* 系列函数容易受到 SQL 注入的影响,因此始终建议使用mysqli_* OR PDO 方法。
因此,我试图找出 Codeigniter 中使用了哪些方法,因为我已经使用 CI 4 个月了。但我无法把它弄出来。
谁能告诉我 CI 中使用了哪些方法或任何其他方法?
提前致谢。
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 注入敞开心扉。