这样使用时,URI/URL是否在CI中转义?
function foo($url_arg)
$this->input->get('foo');
您的示例包含两种不同类型的输入-一个URI段(传递给foo()
的参数)和一个名为foo
的GET数组项。
URI类包含一个名为_filter_uri
的私有方法,正如您可能已经猜到的,它负责过滤URI。首先,它将检查位于config.php
中的$config['permitted_uri_chars']
项,并删除其中未定义的任何字符。然而,不管那里定义了什么,它也会做以下事情:
// Convert programatic characters to entities
$bad = array('$', '(', ')', '%28', '%29');
$good = array('$', '(', ')', '(', ')');
return str_replace($bad, $good, $str);
有关详细信息,请查看URI类源。
关于GET数组项,如果$config['allow_get_array']
(同样位于config.php
中)设置为FALSE
,则GET数组将被完全销毁。默认情况下,$this->input->get('foo')
"只允许使用字母数字(和其他一些)字符"。如果包含TRUE
的第二个参数,CodeIgniter将通过其XSS过滤器运行该值。
您可以通过打开application/config/config.php文件并设置以下内容来启用csrf保护:
$config['csrf_protection']=真;