codeigniter:sql注入和xss_clean

时间:2014-04-11 04:36:25

标签: codeigniter xss sql-injection

我在codenigiter中使用活动记录进行一些查询,我读了一些说使用AR会自动转义参数的文档。我想确认这个并且我读了AR类的源代码,但我很困惑! 我做了一些测试,例如,我访问网址如下:

http://wrecruit.tudouya.com/company/editProfile/4 

然后我在CI中启用了探查器。

当我在网址末尾添加单引号时如下:

http://wrecruit.tudouya.com/company/editProfile/4'

我看到查询执行的真正的sql语句,我得到了这个:

 SELECT *
FROM (`wy_company`)
WHERE `id` =  '4%27'  

将单引号转义为'%27',我想知道这种转义是如何发生的?也许它被输入类转义了?

1 个答案:

答案 0 :(得分:0)

Url地址始终使用urlencode函数进行编码。此功能用代码替换所有符号。 如果你想阻止xss,你应该检查你的参数。可能是这样的(在控制器公司):

public function editProfile($id)
{
    $id = (int)$id;

    if($id){
        // model code execute - loading DB data
    }
}

在数据库查询中,您应该使用Query Bindings,或使用Active记录。它们都是预防注射。