在网址中可以安全使用哪些特殊字符?


14

在网址中可以安全使用哪些特殊字符?


3
询问在URL中使用哪些不安全的特殊字符会更快,更容易(根据下面的Andreas Bonini的回答)。
Mark Hatton'7

2
询问不安全之处很难回答:任何非ASCII字符都必须进行百分比编码。

2
@neo:不,它不是:O
Thomas Bonini 2010年

Answers:


10

安全字符是az,AZ,0-9和_-(下划线和减号),除了用于参数的保留字符之外。

其他字符会在一定程度上带来问题。例如:如果一个参数是一个数组,?param=array[content]即将显示一个URL,而方括号URL编码后的URL看起来很难看,也难以确定。

但是问题不仅在于丑陋,比方说您有一个带有jpg字符且更安全的字符,很多时候浏览器将无法下载它得到404。这是旧版浏览器和某些移动浏览器的问题。

如何测试呢?

  • 将一堆图片/ js / css以及您要测试的字符放在许多访问者的公共页面中的名称中
  • 使404页面在每次点击时都向您发送电子邮件

我的收件箱中有14000封电子邮件,证明了我的观点。


5
好吧,我会说“非常安全的字符”而不是“安全字符”-规范允许更多,但我同意您的观点,在此最好保守一点。
杰夫·阿特伍德

2
月经有什么问题?
BlueWhale 2012年

12

以下字符在URL的路径部分中具有特殊含义(路径部分是“?”之前的所有内容):

  ";" | "/" | "?"

除这些字符外,以下字符在URL的查询部分(“?”之后的所有字符)具有特殊含义。因此,如果它们在“?”之后 您需要逃脱它们:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

有关更深入的说明,请参见RFC


3
当然,为了清楚起见,这个答案与问题相反。这个问题要求哪些字符是安全的,而不是哪些字符是不安全的。由于很难可靠地回答原始问题,因此应该对问题进行编辑,以反过来提出并匹配该答案。
Mark Hatton 2010年

3

这里的答案很好,但是我认为还有一个例外值得一提-非英语字符。如果在您的DNS中正确编码了ñ(如Español)等字符,则在引用此SF问题,便是完全合法的字符。

您必须在DNS中使用Punycode才能使它们在现代浏览器中解析(español的条目是xn--espaol-zwa),但现在在域名中使用它们非常安全,因为非英语使用者也很容易键入它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.