使用codeigniter活动记录时是否存在任何可能的SQL注入漏洞?

时间:2016-04-11 15:56:55

标签: php mysql codeigniter sql-injection

以下是我在Codeigniter项目中用于登录管理员用户的代码

public function login()
{
    $usename = $this->input->post('username');
    $password = $this->input->post('password');

    $this->db->where('username', $username);
    $this->db->where('password', MD5($password));
    $this->db->limit(1);
    $query = $this->db->get('user');

    if($query->num_rows() == 1)
        return true; // login the user
    else
        return false; // user not found
}

回显查询时

echo $this->db->last_query();

输出如下内容:

SELECT * FROM (`user`) WHERE `username` = 'admin' 
    AND `password` = '5f4dcc3b5aa765d61d8327deb882cf99' LIMIT 1

现在,当我输入密码value)'; DROP TABLE user;--时,产生的查询是: -

SELECT * FROM (`user`) WHERE `username` = 'admin' 
    AND `password` = 'c0b24ab68e0f79e23ebec36e36a5309f' LIMIT 1

所以我认为它sql injection非常安全,因为codeigniter active record会自动转义输入数据。

  

根据评论进行修改

     

现在输入的用户名是username'; DROP TABLE user;--,然后生成的查询是

SELECT * FROM (`user`) WHERE `username` = 'username\'; DROP TABLE user;--' 
    AND `password` = '5f4dcc3b5aa765d61d8327deb882cf99' LIMIT 1 
     

所以我想在这种情况下也会逃避。

但我的问题是,上面的代码是否真的足以阻止所有可能的SQL注入攻击?

0 个答案:

没有答案