在我的项目中,我使用$ this-> input->(get | post)将数据传递给模型。在模型中,我总是使用活动记录。 这足以阻止sql注入吗?
答案 0 :(得分:4)
不,它不是。 修改:是的......没有看到您对使用有效记录的评论。您需要使用PHP或CodeIgniter的转义函数手动转义输入,或者您应该使用CodeIgniter的查询绑定,或者您可以使用CodeIgniter的Active Record类。我喜欢做查询绑定,因为它a)使我的查询看起来更好; b)确保在MySQL运行之前清理所有输入。
http://ellislab.com/codeigniter/user_guide/database/queries.html
这样的工作原理如下:
$qStr = "SELECT * FROM students WHERE id=?";
$q = $this->db->query($qStr, array($id);
CodeIgniter将识别您的变量是什么类型的数据,并相应地包装它。也就是说,如果它是一个字符串,它会将'
和'
放在SQL中的转义值周围,这就是确保用户无法注入恶意内容所需的内容。