我在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',我想知道这种转义是如何发生的?也许它被输入类转义了?
答案 0 :(得分:0)
Url地址始终使用urlencode函数进行编码。此功能用代码替换所有符号。 如果你想阻止xss,你应该检查你的参数。可能是这样的(在控制器公司):
public function editProfile($id)
{
$id = (int)$id;
if($id){
// model code execute - loading DB data
}
}
在数据库查询中,您应该使用Query Bindings,或使用Active记录。它们都是预防注射。