在哈希/ URL片段中有空间安全吗?

时间:2012-10-02 21:20:39

标签: javascript html url fragment-identifier hashbang

我正在编写一个Javascript驱动的单页应用程序,其中URL包含#param,例如。 (example.com/#foo/bar)表示应用程序状态(我考虑过使用各种JS框架但由于各种原因不能)。

有时,哈希可能在其中有一个空格(或许多空格)。例如。 example.com/#foo/bar bar2

  1. 这样安全吗?
  2. 是否还有其他字符不应在哈希部分使用?
  3. question解决了URL部分中的空格问题,并建议转义空格。但是,由于在#之后更改片段不会导致新的HTTP请求,这些规则是否适用?

1 个答案:

答案 0 :(得分:3)

我将回避什么是安全的问题,并根据RFC 2396的第2.4.3节简单说明网址中的空白非法 。做非法事情意味着你无法真正预测遇到这样一个URI时软件会做什么。

此外,如果涉及JavaScript,您可能不希望保证更改URL的哈希不会触发XHR并导致重新分析URL的网络活动。 (例如,您可能决定要混淆历史状态或进行一些分析跟踪onhashchange。)