1

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

@将字符添加到此允许字符列表中对我来说是否安全?有哪些风险?

谢谢

4

6 回答 6

3

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

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

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

于 2010-11-08T07:37:19.440 回答
1

它是安全的,请参阅不安全字符列表

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

于 2010-11-08T07:30:10.720 回答
1

此处未列出以防止此类 url:

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

这会去,hacker.com同时看起来像mybank.com休闲苏联。

于 2010-11-08T07:33:12.110 回答
1

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

所以,不管有什么诱惑,都不要这样做。你为什么还要呢?

于 2010-11-08T07:36:09.220 回答
1

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

于 2010-11-08T07:37:01.100 回答
-1

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

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

您可以使用 < 将 < 符号和其他特殊危险字符替换为相应的替代品。

于 2015-02-04T06:41:32.070 回答