即使在更复杂的查询中,CodeIgniter Query Builder 是否也能防止 sql 注入?
Does CodeIgniter Query Builder protect against sql injection even in more complexed queries?
我知道使用 CodeIgniter 的 Query Builder 应该可以防止 SQL 注入。手册说它 "allows for safer queries, since the values are escaped automatically by the system." 但我不确定 "values" 它们是否表示通过查询生成器的任何内容,或者仅表示以简单结构传递的值,例如:$this->db->where('name', $name);
例如,如果我使用:
$this->db->select('student_id, concat(fname, " ",lname) as student_name');
$this->db->from('student');
$this->db->join('class_has_teacher',"student.class_id=class_has_teacher.class_id AND teacher_id=$teacher_id");
$query = $this->db->get();
JOIN条件中的$teacher_id
是否也会被转义?
(以防万一,我使用的是 CodeIgniter 3.1.9)
是的,$teacher_id
会被转义。
我知道使用 CodeIgniter 的 Query Builder 应该可以防止 SQL 注入。手册说它 "allows for safer queries, since the values are escaped automatically by the system." 但我不确定 "values" 它们是否表示通过查询生成器的任何内容,或者仅表示以简单结构传递的值,例如:$this->db->where('name', $name);
例如,如果我使用:
$this->db->select('student_id, concat(fname, " ",lname) as student_name');
$this->db->from('student');
$this->db->join('class_has_teacher',"student.class_id=class_has_teacher.class_id AND teacher_id=$teacher_id");
$query = $this->db->get();
JOIN条件中的$teacher_id
是否也会被转义?
(以防万一,我使用的是 CodeIgniter 3.1.9)
是的,$teacher_id
会被转义。