4

我正在使用Codeigniter PHP 框架。在其中一个配置文件中,您可以设置允许的 URL 字符:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 

因此,如果我尝试访问此网址:website.com/controller/%22quotedString%22,除非我在允许的字符上附加引号,否则我会收到错误消息:

$config['permitted_uri_chars'] .= '"'; 

我的应用程序实际上需要在 URL 中允许所有奇怪的字符,但我不希望有一个巨大的硬编码字符列表。Codeigniter 警告不要允许所有字符:

/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/

他们没有确切说明允许所有字符的安全问题。那么有哪些问题呢?

4

2 回答 2

4

在您的 URL 中允许所有可能的字符没有固有的安全风险。安全问题取决于您的应用程序如何处理它们。

于 2012-08-17T22:06:25.557 回答
1

看到这个答案。它几乎解释了如果您允许用户做他们想做的任何事情,用户可以做什么:) 基本上,通过在您的 url 中不允许使用 '<' 和 "'",您可以保护自己免受 XSS 和 SQL 注入的侵害。但是,如果您正确转义并控制一切,我相信允许 URL 中的所有字符是没有问题的。

于 2012-08-17T22:07:57.773 回答