1

刚刚在 Stack Overflow 上阅读了这篇文章,因此让我想知道 SQL 注入是否可以通过 CI 中的活动记录进行。

在我项目中的大多数地方,对于用户注册和用户配置文件更新,我都做了这样的 SQL 插入:

控制器 :

$name = $this->input->post('name');
$last_name = $this->input->post('last_name');
$age = $this->input->post('dob');

$user_data = array(
    'name' => $name,
    'last_name' => $last_name,
    'age' => $age
);

$this->user_model->add_user_function($user_data);

模型:

function add_user_function($data)
{
    $this->db->insert('user_table',$data);
    return;
}

就像上面 SO 链接中的示例一样,我的代码是否容易受到 SQL 注入的影响?
如果有可能损害我的系统,您能否举一个具体的例子,如果它存在,我该如何预防。

4

2 回答 2

8

CodeIgniter 已经为您的案例提供了 2 个安全功能。

  1. 用户输入的 XSS 过滤: 输入类的方法有第二个布尔参数,它允许您通过 XSS 过滤器运行输入,以防您没有启用全局 xss 过滤器。

  2. 对于 SQL 注入,使用绑定查询和活动记录是安全的,它将使您免于 SQL 注入,因为框架会完成所有转义易受攻击的用户输入的工作。用户报告的活动记录漏洞很少,但是 CodeIgnitor 团队(EllisLabs)在后续版本中迅速修复了这些漏洞

于 2012-09-19T07:16:17.653 回答
1

CodeIgniter 在使用活动记录而不是运行直接 SQL 查询时会去除引号和易受攻击的脚本。所以不用担心使用活动记录......

mysql_real_escape_string并且在生成要运行的 SQL 查询时在内部进行了一些检查。

于 2012-09-19T07:14:44.683 回答