2010-11-08 36 views
1

從笨config.php文件:@ URL中允許的字符,是否危險?

/* 
|-------------------------------------------------------------------------- 
| 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~%.:_\-'; 

難道是安全的,我到@字符添加到允許的字符這個名單?有什麼風險?

感謝

+0

這是'%'而不允許的。 – Gumbo 2010-11-08 07:32:29

+0

@Gumbo,應該允許 - 再次閱讀代碼註釋。 – 2010-11-08 07:34:04

+0

@ J-16 SDiZ:所以'foo%〜bar'被允許但顯然無效。 – Gumbo 2010-11-08 07:37:09

回答

1

它沒有列在這裏,以防止此類網址的名單:

http://[email protected]/ 

這將去hacker.com雖然看起來像mybank.com隨便蘇聯。

+0

'/'也沒有列出。 – Gumbo 2010-11-08 07:37:38

+0

請參閱'URL.php'和'Router.php' - 將網址分解爲段後使用。 – 2010-11-08 08:33:10

+0

這可能是顯而易見的,但@過濾器並不能阻止這種類型的網址顯而易見,因爲正如您所說,它會轉到hacker.com並由hacker.com來解析它。其次,你真的希望普通用戶知道URL中幾個字符序列的區別嗎? – 2012-01-18 02:02:48

1

你不應該,除非你編碼它。未編碼的@爲特殊含義保留,如FTP用戶([email protected])或電子郵件地址(monty[email protected])。

所以,不管誘惑,不要這樣做。無論如何,你爲什麼要?

+0

uuencoded?你是認真的嗎? – 2010-11-08 08:06:40

1

RFC 1738只允許以URI的路徑段以下字符:A-Za-z0-9_\-\.!~*\'"(),(未查詢部分)

3

@用於預先準備的用戶名和密碼可能爲URL-S需要HTTP認證。這是如何不安全的,我無法從這個評論中看出來。理論上,根據上下文你可能不希望用戶輸入這樣的url -s。

除此之外,這種安全檢查有點...愚蠢的是,有越來越多的頂級域使用字符而不是ASCII,俄羅斯被分配.рф,中國大陸。還有更多的例子。

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