如果我在 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。