$ this-db-> query()是否具有mysql注入保护?我想知道因为我在实例中使用它并且没有做任何事情来防止sql注入.
使用CodeIgniter查询的ActiveRecord样式转义参数,但不转义query().
您可以这种方式使用活动记录:
$someAge = 25;
$this->db->select('names, age');
$query = $this->db->get_where('people', array('age' => '>' . $someAge));
Run Code Online (Sandbox Code Playgroud)
在此处阅读更多相关信息:http://ellislab.com/codeigniter/user-guide/database/active_record.html
不,db->query() 默认不受 SQL 注入保护,您几乎没有选择。使用查询绑定
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
Run Code Online (Sandbox Code Playgroud)
对于更复杂的查询,您必须在继续时构建查询,请使用 compile_bind() 获取 SQL 块。
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$safe_sql = $this->db->compile_bind($sql, array(3, 'live', 'Rick'));
Run Code Online (Sandbox Code Playgroud)
等等。
或者在参数上使用转义 $this->db->escape()
$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
Run Code Online (Sandbox Code Playgroud)
首先使用表单验证并包括 xss_clear、max_length 等任何一种方式与上述之一结合始终是最佳实践。
归档时间: |
|
查看次数: |
28207 次 |
最近记录: |