0

像这样使用时,是否在 CI 中转义了 URI/URL?

function foo($url_arg)
$this->input->get('foo');
4

2 回答 2

3

您的示例包含 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 过滤器运行值。

于 2012-07-27T15:26:32.923 回答
1

您可以通过打开 application/config/config.php 文件并设置以下内容来启用 csrf 保护:

$config['csrf_protection'] = 真;

于 2016-03-30T10:48:09.543 回答