在 HTTP(S) URL 中,:
(直接形式)有以下用途:
- scheme和hier-part (
http://example.com
)之间的分隔符
- 主机和端口之间的分隔符(
example.com:80
)
- (已弃用)userinfo (
user:password@example.com
) 中名称和密码之间的分隔符
- 在主机中,它可能是 IP 地址的一部分
在path、query和fragment 中,:
可以用来表示数据。所以 path like/hello
和 path like之间没有技术上的区别/:hello
。
在您的示例中,它是百分比编码的(as %3A
)。任何百分比编码的字符都可以出现在路径/查询/片段中,它代表数据。
(基于URI 标准的术语)
有什么问题的保安有关:
或%3A
路径/查询/片段,相比就可能会出现的任何其他字符。无论可以用做:
(例如,使用它作为前缀的用户跟踪字符串)可能也可以用做!
,;
等等。
在您的情况下可能会发生什么(只是观察链接/重定向的猜测,我没有使用 Disqus 的经验):
- 当用户发布外部链接时,Disqus 不会直接链接它。相反,它们链接到自己的服务http://disq.us/,然后重定向到原始 URL。
- Disqus 添加原始 URL 作为
url
参数的值(它添加一个由 前置的神秘字符串:
),以及一个 ID 作为cuid
参数的值。
- 该
:
-string生成(并记住)由Disqus(见什么可能用它3点)。
- 该
cuid
指示Disqus帐户网站所有者在那里与外部链接评论已发布(可能用于分析的目的)的。
- 对于特定的原始 URL,仅当 disq.us URL 包含与
:
第一次提交原始 URL 时生成的相同的-string 时,重定向才有效。这可以防止他们的重定向服务被用于从未在评论中发布的 URL。
所以点击这个链接会影响你的隐私,即使你禁用了发送Referer
,即使你不执行 JavaScript:
- 链接网站所有者可以知道您点击了他们的链接。
- Disqus 可以知道您点击了此链接(以及在谁的网站上,可能还有页面)。
- 链接的站点所有者可以知道您来自 Disqus 评论中的链接,并且可能还来自哪个站点/页面(例如,如果
cuid
可以在搜索引擎中找到Disqus )。
为了防止这种情况,您可以提取url
参数值,删除前面的最后一部分(包括 the)%3A
,然后对结果进行一次百分比解码。这使您可以直接访问链接的文档,而无需通过 Disqus 的重定向服务。只要他们决定在他们的重定向 URL 中包含目标 URL(他们不必这样做),这就会起作用。