请问$这-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