所以很明显,请求头可以通过客户端欺骗,通过任何扩展/AV/防火墙/浏览器设置等…
我的问题是:一个网站所有者
bad.com
可以创建一个iframe mywidget.php
,我将看到一个欺骗的引用头good.com
。
欺骗将由站点所有者(例如:服务器)完成,而不是由顶部列出的实际客户端软件完成。
两个点:
- 我说的是一个不同的引用者
good.com
,而不是一个空的。 - 显然排除 ajax请求。
- 如果实际可行-内容安全策略,可以作为解决方案。但是我不想把每个单独的域名添加到它的头值。
谢谢。
是的,不幸的是,这种可能性确实存在,而且许多"good.com"之类的网站都在努力解决这样的问题。
想象一下,由于某些原因,"good.com"有一个重定向网关用于统计或其他合理的目的。例如,这允许"good.com"测量其用户访问不同网站的次数。
现在在"bad.com"用户看到一个iframe
,或者只是一个按钮,以某种方式导航到一个URL: good.site.example/redirect?to=www.thirdparty.com
。URL上的页面以保留Referer的方式将用户重定向到www.thirdparty.com
。
所以基本上是的,Referer
HTTP头在安全方面不是依赖的东西。
不是欺骗,但是如果你的网站上有任何开放的重定向漏洞,那么他们可以通过这些漏洞传递请求(正如Andrew Sklyarevsky指出的)。
另一件要注意的事情是解析错误。
。如果您使用较差的URL解析技术检查引用http://good.example.com
,那么攻击者可能会尝试从他们的页面(如
http://bad.example.com?http://good.example.com
到满足验证的页面。
还请注意,有些用户启用了隐私扩展,这些扩展保留了引荐头,这可能会阻碍您的安全检查,并使他们容易受到攻击或无法使用您的网站,这取决于您如何实现它。