Refererer Header是一个请求标头,用于获取有关访问当前网站的先前URL或链接的信息。在许多典型的业务用例中都使用此信息。顾名思义,引荐来源标头用于获取有关引用当前URL的URL的信息。
出于安全原因,如果链接到特定页面的URL是文件系统URL(例如file:///或data:///),则浏览器不会发送Refererer Header。这可能会将本地计算机的详细信息泄露给网站管理员。
用例
- 数据分析:网站在其他多个网站上放置广告并提供指向其网站的链接是很常见的。然后,企业可能需要根据它们生成的流量来跟踪引荐来源网址域。为了获得此信息,网站可以使用引荐来源标头来了解用户所来自的网站。
- 基于站点地图和导航的分析:了解什么是最常访问的页面以及链接到当前页面的源页面。
- 日志记录:在应用程序日志中记录跟踪详细信息。此数据可能用于标识数据模式。
跨域引荐来源标头泄漏和影响
URL由多个部分组成。方案,域,路径和请求数据。这些数据可能包含一些关键信息。路径可能包含密码重置令牌。理想情况下,密码令牌用于对在网站上忘记其凭据的用户进行身份验证。一旦用户请求站点生成密码重置链接,该网站就会创建一个重置链接(通常一次可用),然后通过电子邮件将其发送回用户。此令牌URL非常重要,因为拥有此URL的任何人都可以实际上重置用户密码并可以接管用户帐户。
当所涉及的帐户与货币交易(如网上银行帐户,付款钱包或特权访问帐户(如站点管理员)等)相关时,这一点变得尤为重要。
下面是可能发生这种情况的代表。
例子
场景:密码重置链接泄漏发生。
1)用户单击trusted.com网站上的“忘记密码”按钮。
2) Trusted.com会生成一个一次性的密码重置链接,并将其发送回用户。
3)请求类似于以下内容,
https://trusted.com/reset-password/abcaa2ss-asd2s-23412aasdzla
4)用户打开链接,并在用户浏览器中进行此调用之后, trusted.com也可能会调用其他第三方域进行分析或使用静态域或其他第三方服务(例如地图)。
5)如果用户只是打开重置链接并在不重置密码的情况下将其关闭,则对第三方域的调用将具有重置令牌,并在引荐来源标头中带有一个哈希值。
https://google.com/analytics.js
Referrer : https://trusted.com/reset-password/abcaa2ss-asd2s-23412aasdzla
6)第三方域从其应用程序日志中可以访问此数据并重置密码。
引荐来源网址泄漏是严重漏洞的某些情况:
- 包含密码重置令牌的URL。
- 包含在引荐来源网址中传递的用户访问令牌的URL。
- 包含服务间令牌的URL,该令牌用于在不同的Web服务之间进行通信。
防止引荐来源泄漏漏洞
引用网址标头不能在所有URL和所有域上设置。可以指定何时发送和何时不发送引荐来源标头。这由所谓的引荐来源网址策略定义。共同政策包括-
- Referrer-Policy:no-referrer-禁用在请求标头上发送的引荐来源信息。
- Referrer-Policy:来源-仅发送引荐来源网址中的主机域,而不发送整个URL路径。
- Referrer-Policy:相同来源-仅当双方(源链接和目标链接)都在同一域中时,才发送标头信息。