如果协议 URL 包含“%2F”,则 Firefox 中的协议 URL 不起作用

如果协议 URL 包含“%2F”,则 Firefox 中的协议 URL 不起作用

如果我在 Mozilla Firefox 的导航栏中写入类似以下内容,什么也不会发生:

org-protocol://capture://p/http%3A%2F%2Fsuperuser.com%2Fquestions%2Fask/protocol%20in%20firefox%20does%20not%20take%20%22%252F%22%20as%20part%20of%20a%20string%20-%20Super%20User/

当我省略所有 时%2F,URL 可以正常处理。通过终端调用 emacsclient 可以正常工作,包括%2F

在以前的 Firefox 版本中,此协议%2F在所有情况下都运行良好。为什么 Firefox 现在可以识别这种情况?

答案1

我相信这是一个安全功能。%2F您可能知道,这是正斜杠字符的 URL 编码/。允许%2F它本质上就是允许“不引人注意”的目录遍历,即阻止用户清楚地看到他们正在遍历目录。将此与允许字符结合起来.,您可以做一些令人讨厌的事情,特别是如果您谈论的是本地文件系统,其中目录遍历没有像 HTTP 服务器那样受到严格限制(但并非总是如此)。

您还记得在哪些版本的 Firefox 中此功能有效,以及在哪些版本中此功能失效吗?多年来,Firefox 中已经发布了多个与输入验证相关的安全补丁,用于解决各种目录遍历漏洞。您的 URI 可能会触发安全代码。下面的一些链接中甚至有人抱怨,根据具体版本,尝试的补丁要么使问题恶化,要么导致一些误报;即代码会阻止合法的 URI。

  1. http://www.securityfocus.com/bid/24191/references
  2. http://www.securiteam.com/securitynews/5LP011FLPC.html
  3. http://www.securiteam.com/securitynews/5CP0M0UN5A.html
  4. http://www.mozilla.org/security/announce/2011/mfsa2011-16.html

相关内容