像这样使用时,是否在 CI 中转义了 URI/URL?
function foo($url_arg)
$this->input->get('foo');
像这样使用时,是否在 CI 中转义了 URI/URL?
function foo($url_arg)
$this->input->get('foo');
您的示例包含 2 种不同类型的输入 - 一个 URI 段(传递给 的参数foo()
)和一个名为 的 GET 数组项foo
。
URI 类包含一个名为的私有方法,_filter_uri
正如您可能已经猜到的,它负责过滤 URI。首先,它将检查$config['permitted_uri_chars']
位于其中的项目config.php
并删除其中未定义的任何字符。然而,无论那里定义了什么,它也会执行以下操作:
// 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'] = 真;