URL中允许使用@字符,危险吗?

时间:2010-11-08 07:28:24

标签: php codeigniter security codeigniter-url

从CodeIgniter config.php文件:

/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify with a regular expression which characters are permitted
| within your URLs.  When someone tries to submit a URL with disallowed
| characters they will get a warning message.
|
| 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!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

@字符添加到此允许字符列表中是否安全?有什么风险?

由于

6 个答案:

答案 0 :(得分:3)

@用于将用户名和可能的密码添加到需要HTTP身份验证的URL-s。这是不安全的我从这个评论中无法分辨出来。从理论上讲,根据上下文,您可能不希望用户输入此类URL。

除此之外,这种安全检查有点愚蠢,有越来越多的顶级域名使用除ASCII以外的字符,俄罗斯被分配.рф,中国大陆得到。中国,有更多的例子。

http://en.wikipedia.org/wiki/Internationalized_domain_name

答案 1 :(得分:1)

安全,请参阅不安全字符列表

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

答案 2 :(得分:1)

此处未列出此类网址以防止此类网址:

http://mybank.com-some-very-long-string@hacker.com/

这会hacker.com,而mybank.com看起来像偶然的ussr。

答案 3 :(得分:1)

你不应该,除非你编码它。未编码的@保留用于特殊含义,如FTP用户(monty@ftp.python.com)或电子邮件地址(monty.python@camelot.com)。

所以,不管诱惑如何,都不要这样做。无论如何你还想要什么?

答案 4 :(得分:1)

RFC 1738仅允许URI的路径段中包含以下字符:A-Za-z0-9_\-\.!~*\'"(),(不是查询部分)

答案 5 :(得分:-1)

您可以在此处找到有关它的更多具体细节,它建议您如何使用编码

来使用危险字符

http://perishablepress.com/stop-using-unsafe-characters-in-urls/ 更多javascript:可能是危险

您可以使用& lt replacement<标志和其他特殊危险人物以及相应的替代品。