在CodeIgniter中,如何避免sql注入?有没有什么方法可以在配置文件中设置来避免sql注入?我使用下面的代码来选择值:
$this->db->query("SELECT * FROM tablename WHERE var='$val1'");这是用于插入值的:
$this->db->query("INSERT INTO tablename (`var1`,`var2`) VALUES ('$val1','$val2')");另一个用于从数据库中插入和选择值的方法是CodeIgniter的insert()和get()方法。在使用CodeIgniter的内置函数时,是否有可能进行sql注入
发布于 2011-05-02 21:05:39
CodeIgniter的Active Record方法会自动为您避开查询,以防止sql注入。
$this->db->select('*')->from('tablename')->where('var', $val1);
$this->db->get();或
$this->db->insert('tablename', array('var1'=>$val1, 'var2'=>$val2));如果你不想使用活动记录,你可以使用query bindings来防止注入。
$sql = 'SELECT * FROM tablename WHERE var = ?';
$this->db->query($sql, array($val1));或者,对于插入,可以使用insert_string()方法。
$sql = $this->db->insert_string('tablename', array('var1'=>$val1, 'var2'=>$val2));
$this->db->query($sql);如果您更喜欢运行自己的查询,也可以使用escape()方法。
$val1 = $this->db->escape($val1);
$this->db->query("SELECT * FROM tablename WHERE var=$val1");发布于 2011-05-02 21:08:21
您可以使用
$this->db->escape()方法..
$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($omgomg).")";此处列出了其他方法。
http://codeigniter.com/user_guide/database/queries.html
发布于 2011-05-02 21:14:58
您应该尽量避免将查询直接写入字符串,然后将它们传递给查询函数。更好的选择是使用Active Record类,它将为您构建查询并转义值。http://codeigniter.com/user_guide/database/active_record.html
如果您出于某种原因想要避免使用活动记录类,那么您可以查看数据库类的Codeigniter文档,该文档提供了一个转义方法,用于在将值传递给query方法之前对其进行转义。http://www.codeignitor.com/user_guide/database/queries.html
本
https://stackoverflow.com/questions/5857386
复制相似问题