sql注入漏洞到codeigniter或php

时间:2014-08-20 07:52:30

标签: php sql codeigniter sql-injection

您好我想知道为什么以前从未问过这种示例问题。 我从我的大学得到这个代码,他们说这种代码能够阻止sql注入

我们使用codeigniter构建一个网站,这里是防止sql注入的代码

控制器

$usr = $this->input->post('userid');
$pwd = $this->input->post('passwd');

if($usr && $pwd) {
                $ack = $this->mAuth->get_user($usr);
$pwx = $ack['passwd'];
                    if($ack && $pwd == $pwx) {
                        //redirect code
}

模型

public function get_user($user_id='', $status=1) {
        $user_id = $this->db->escape(trim($user_id));
        $status  = $status ? 'and user_status_uid = 1' : '';

        $sql = "select * from users where user_id = lower($user_id)"

        return rst2Array($sql, 'row');
    }

我尝试使用1'或1 = 1登录等我发现它确实阻止了sql注入,即使它只是一个纯文本和密码。

此代码有任何漏洞吗? 感谢

1 个答案:

答案 0 :(得分:1)

简单地说:"魔法"在$this->db->escape函数中。它在字符串值周围添加引号,并为SQL语法正确转义它们。请参阅https://ellislab.com/codeigniter/user-guide/database/queries.html

除非该函数中存在任何错误,否则在这种情况下确实会阻止SQL注入。