URL 中的冒号:安全吗?

信息安全 网页浏览器 网址重定向 网址
2021-09-12 21:09:35

有朋友问我点击以下链接是不是比较安全:

https://disq.us/url?url=https%3A%2F%2Farstechnica.co.uk%2Finformation-technology%2F2017%2F01%2Fantivirus-is-bad%2F%3Av0Er-2ea1-t4FcbndbRV_9xv5-4&cuid=977864

包含在此页面的评论中:

https://betanews.com/2017/05/09/microsoft-fixes-crazy-bad-windows-vulnerability/#comment-3296284701

看了一下链接,我重写了它直接进入它引用的文章,并提供了我的朋友简化的链接。(请注意,我既不宽恕也不谴责文章本身的任何立场。)

但是查看原始 URL,您会注意到它在一个不常见的位置包含一个冒号(冒号被编码为%3Aafter bad%2F)。

从安全的角度来看,该冒号是否代表任何危险?

同样从安全的角度来看,如果用户点击上面的原始disq.us链接,是否会产生任何严重的危害

1个回答

在 HTTP(S) URL 中,:(直接形式)有以下用途:

  • schemehier-part ( http://example.com)之间的分隔符
  • 主机端口之间的分隔符( example.com:80)
  • (已弃用)userinfo ( user:password@example.com) 中名称和密码之间的分隔符
  • 主机中,它可能是 IP 地址的一部分

pathqueryfragment 中:可以用来表示数据。所以 path like/hello和 path like之间没有技术上的区别/:hello

在您的示例中,它是百分比编码的(as %3A)。任何百分比编码的字符都可以出现在路径/查询/片段中,它代表数据。

(基于URI 标准的术语

什么问题的保安有关:%3A路径/查询/片段,相比就可能会出现的任何其他字符。无论可以用做:(例如,使用它作为前缀的用户跟踪字符串)可能也可以用做!;等等。


在您的情况下可能会发生什么(只是观察链接/重定向的猜测,我没有使用 Disqus 的经验):

  1. 当用户发布外部链接时,Disqus 不会直接链接它。相反,它们链接到自己的服务http://disq.us/,然后重定向到原始 URL。
  2. Disqus 添加原始 URL 作为url参数的(它添加一个由 前置的神秘字符串:),以及一个 ID 作为cuid参数的
    • :-string生成(并记住)由Disqus(见什么可能用它3点)。
    • cuid指示Disqus帐户网站所有者在那里与外部链接评论已发布(可能用于分析的目的)的。
  3. 对于特定的原始 URL,仅当 disq.us URL 包含与:第一次提交原始 URL 时生成的相同的-string 时,重定向才有效这可以防止他们的重定向服务被用于从未在评论中发布的 URL。

所以点击这个链接会影响你的隐私,即使你禁用了发送Referer,即使你不执行 JavaScript:

  • 链接网站所有者可以知道您点击了他们的链接。
  • Disqus 可以知道您点击了此链接(以及在谁的网站上,可能还有页面)。
  • 链接的站点所有者可以知道您来自 Disqus 评论中的链接,并且可能还来自哪个站点/页面(例如,如果cuid可以在搜索引擎中找到Disqus )。

为了防止这种情况,您可以提取url参数值,删除前面的最后一部分(包括 the)%3A,然后对结果进行一次百分比解码。这使您可以直接访问链接的文档,而无需通过 Disqus 的重定向服务。只要他们决定在他们的重定向 URL 中包含目标 URL(他们不必这样做),这就会起作用。