【问题标题】:Can I rely on Referer HTTP header?我可以依赖Referer HTTP 标头吗?
【发布时间】:2012-01-09 07:55:04
【问题描述】:

我可以在我的 Web 应用程序中依赖 Referer HTTP 标头吗?我想检查用户是否来自特定的域/网页,如果是,则相应地更改我的网站布局。

我知道人们可以在浏览器中禁用Referer。任何想法用户多久这样做一次?我可以依靠Referer 出现在 99% 中吗?

【问题讨论】:

  • 我这纯粹是基于猜测和预感,但我想互联网上的绝大多数用户都不会修改浏览器的任何设置,更不用说Referer了。我想这将基于您的目标受众,即。老年人与黑客。两个极端的可能性。
  • 您的问题在这里得到了很好的回答:stackoverflow.com/questions/6023941/…
  • @favoretti 在这里并不真正相关
  • @favoretti 问题是关于它被设置的可能性有多大。不是它的防弹。

标签: http-headers http-referer


【解决方案1】:

作为一般规则,您应该在任何重要的事情上信任 HTTP 引荐来源标头,除了对访问者身份的纯粹信息统计分析或在寻找用户行为模式时您自己的网站。

在任何情况下都不建议将此标头用于 AAA(身份验证、授权和计费),除非如上所述,您认为计费是对访问者行为的简单流量分析。

Common Weakness Enumeration 将此弱点列为CWE-293: Using Referer Field for Authentication

HTTP 请求中的 referer 字段很容易修改,因此不是一种有效的消息完整性检查方法。

不信任Referer Header的其他一些更具体的原因包括:

  • 通常,当从 HTTP HTTPS (TLS) 连接“链接”时,大多数标准 Web 浏览器不会通知此标头。

  • 出于隐私原因,许多公司代理配置为删除/剥离此标头,因此即使 Web 浏览器发送此标头,公司代理软件也可能将其删除。

  • 众所周知,安全解决方案、恶意软件、嵌入到应用程序中的浏览器...会修改和/或欺骗此标头的内容。

请注意:

  • 当从 HTTPS “链接”到 HTTPS 时,即使更改域名或网络地址目标,大多数标准 Web 浏览器也会通知此标头。

【讨论】:

  • 您是否有“即使从 HTTPS '链接'到 HTTPS,大多数标准 Web 浏览器在更改域名或网络地址目标时不会通知此标头”的来源。 ?我想了解更多。
  • @tom 感谢您的指出!这一段实际上是按我本意的相反意思打错了。我现在已经更新了它。无论如何,这是一个棘手的话题,我的回答反映了对它的旧(几年前)研究。一些有趣的链接供您自己调查:smerity.com/articles/2013/…isc.sans.edu/forums/diary/…
【解决方案2】:

只要你在没有可用值时有一个合理的默认行为,并且你没有基于它做任何敏感的事情,它可能没问题。

恶意用户可以将该标头设置为他们想要的任何内容。我希望大多数用户不会修改其浏览器的默认行为,因此它可能在大多数情况下都存在且准确。

在某些情况下,在 HTTPS 和 HTTP 之间切换可能会导致无法发送 referer 标头。

【讨论】:

  • 你基本上是在这里重申问题本身。
猜你喜欢
  • 2011-01-23
  • 2010-12-08
  • 2018-08-09
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多