笨这个 - > DB->查询(Codeigniter this->db->query)

2019-09-24 02:30发布

请问$这-DB->查询()有mysql注射保护? 我不知道,因为我用这个实例中,并没有做任何事情来防止SQL注入。

Answer 1:

使用CodeIgniter查询的ActiveRecord的风格逃脱参数,但不能查询()。

您可以使用这种方式的活动记录:

$someAge = 25;
$this->db->select('names, age');
$query = $this->db->get_where('people', array('age' => '>' . $someAge));

了解更多关于在这里: https://www.codeigniter.com/userguide2/database/active_record.html



Answer 2:

不,DB->查询()是不是默认保护的SQL注入攻击,你有几种选择。 使用查询绑定

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick'));

对于更复杂的奎雷斯,你必须为你去构建查询,使用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'));

等等

或使用逃脱参数$这个 - > DB->越狱()

$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";

它总是先使用表单验证和包括像xss_clear,MAX_LENGTH等结合两种方式与上面的一个最佳实践。



文章来源: Codeigniter this->db->query