我可以依赖Referer HTTP标头吗?

时间:2011-11-30 00:57:09

标签: http-headers http-referer

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

我知道人们可以在浏览器中停用Referer。任何想法用户经常这样做?我可以依靠Referer出现在99%吗?

2 个答案:

答案 0 :(得分:30)

作为一般规则,您应该信任HTTP Referer标头以用于任何重要事项,除了对访问者是谁或在用户之间寻找行为模式的纯信息统计分析您自己的网站。

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

OWASP(开放式Web应用程序安全项目)使用Referer header for AAA in your Web Application将其视为“漏洞”。

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

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

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

  • 在野外安全解决方案中,恶意软件,嵌入到应用程序中的浏览器......已知会修改和/或欺骗此标题的内容。

请注意:

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

答案 1 :(得分:1)

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

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

在某些情况下,HTTPS和HTTP之间的切换会导致不发送引用标头。