允许网站URL中的所有字符有哪些安全隐患?

时间:2012-08-17 21:59:37

标签: php security codeigniter url

我正在使用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!!
|
*/

他们没有准确说明允许所有字符的安全问题。那么问题是什么?

2 个答案:

答案 0 :(得分:4)

允许URL中的所有可能字符不存在固有的安全风险。安全问题取决于您的应用程序对它们的作用。

答案 1 :(得分:1)

this answer。它几乎解释了如果允许用户做任何他们想做的事情,用户可以做什么:)基本上,不允许'<'在你的网址中,你可以保护自己免受XSS和SQL注入攻击。但是,如果你正确地逃脱并控制一切,我相信允许URL中的所有字符都没有问题。