对编码器或php的SQL注入漏洞


sql injection vulnerability to codeigniter or php

你好,我想知道为什么以前从来没有问过这种例子问题。我从我的大学得到这段代码他们说这段代码可以防止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注入,即使它只是一个纯文本和密码。

此代码是否存在任何漏洞?由于

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

排除函数中的任何错误,在这种情况下,它确实防止了SQL注入。