2011-11-30 57 views
20

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

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

+3

我基于这种纯粹的猜测和预感,但我想在互联网上的绝大多数用户不会修改任何设置到他们的浏览器,更不用说Referer了。我想这将基于你的目标受众,即。老年公民与黑客。为可能性的两个极端。 – BVSmallman

+3

可能重复[HTTP_REFERER的可靠程度](http://stackoverflow.com/questions/6023941/how-reliable-is-http-referer) –

+1

你的问题在这里很好地回答:http:// stackoverflow。com/questions/6023941/how-reliable-is-http-referer – favoretti

回答

1

只要你有一个合理的默认行为,当没有一个可用的值,并且你没有做任何敏感的基础上,它可能是好的。

恶意用户可以将该标头设置为任何他们想要的。我希望大多数用户不会修改其浏览器的默认行为,因此大部分时间都可能在那里并准确无误。

可能还有一些情况下,在HTTPS和HTTP之间切换将导致不发送引用者标头。

+4

你基本上在这里重申这个问题。 – stefan

22

作为一般规则,你应该信任HTTP引用头的重要性的任何事情,除了谁是你的访客或您自己的网站的用户中寻找行为模式时,纯信息的统计分析。

在任何情况下,建议您使用AAA标头(认证,授权和计费),除非如上所述,考虑对访问者行为进行简单流量分析。

OWASP(Open Web Application Security Project)认为它是一个使用Referer header for AAA in your Web Application的“Vulnerabilty”。

其他一些更具体的理由不信任Referer标头,包括:

  • 在一般情况下,当来自HTTP “链接” < - > HTTPS(TLS)连接,最标准的Web浏览器将不通知这个头。

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

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

要注意的是:

  • 当从HTTPS“链接”到HTTPS,最标准的Web浏览器将更改域名或网络地址目的地时,即使告知头。
+0

您是否有“甚至当'从HTTPS链接'到HTTPS时,大多数标准Web浏览器在更改域名或网络地址目标时不会通知此标头。” ?我想了解更多。 – tom

+1

@tom感谢您指出!事实上,我认为这段文字是错误的。我现在更新了它。无论如何,这是一个棘手的话题,我的答案反映了旧的研究(几年前)。一些有趣的链接为您自己的调查:http://smerity.com/articles/2013/where_did_all_the_http_referrers_go.html和https://isc.sans.edu/forums/diary/When+does+your+browser+send+a+引荐+报头+或+不/ 16433 / –

相关问题