我听说过(感谢SO)mysql_ *系列函数容易受到SQL注入攻击,所以总是建议使用 mysqli_ *或PDO方法。
所以,我试图找出在Codeigniter中使用了哪些方法,因为我从4个月以来一直在使用CI。但我无法理解。
有人能告诉我CI中使用了哪些或其他方法?
提前致谢。
答案 0 :(得分: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
等。如果您尝试使用$this->db->query("SELECT * FROM table WHERE field = '" . $field . "'")
运行自己的查询,那么您需要注意保护自己,因为您绕过了CodeIgniter的安全机制。使用query()
方法直接运行查询就像是说“别担心,我知道我在做什么”。您需要通过调用$this->db->escape()
或其相关函数专门要求CodeIgniter为您清理某些值。如果你只是将变量连接到你的查询中,那么你将打开自己的SQL注入。