繁体   English   中英

可以伪造document.referrer吗?

[英]Can document.referrer be forged?

情况:我们有一个小部件,希望允许在受信任的站点上进行格式化。 为了减轻潜在的Clickjacking攻击,我们希望在窗口小部件根据域白名单加载时检查引荐来源网址。 没有匹配项=禁用小部件。

我知道使用Flash可以发送带有任何Referer标头的任意HTTP请求。 难道document.referrer同样容易受到攻击吗?

注意:我知道用户可以更改设置,而其他情况可以使document.referrer为空白。 那也行。 如果窗口小部件始终处于工作状态,那么它的重要性要比不可靠的窗口小部件重要。

编辑:X-Frame-Options目前无法使用,因为在Chrome或Safari中未实现ALLOW-FROM。 我需要能够支持第三方域名。

是。 您可以从字面上做到:

document.referrer = "http://foobar.com";

如果只想让您的网站在受信任的网站上进行格式化,则可以使用X-Frame-Options HTTP响应标头。

有关X框架选项的MDN开发人员文章

编辑:如果需要在不完全支持X-Frame-Options的浏览器上进行此工作,则需要更复杂的方法,即“外部”站点与托管iframed站点的服务器进行通信以请求一次性令牌绑定到客户端IP地址,并使用该地址批准/拒绝访问。

众所周知,例如,您可以通过数据URI来清除Referer标头和document.referrer。 只要您不允许undefined document.referrer,就不会给攻击者带来任何意外的访问。

您还要在问题中声明Flash可以使用攻击者控制的Referer标头发出请求。 但是,在这种情况下,他们将无法将响应呈现为服务器原始中的文档。 他们将无法对此进行任何点击劫持攻击。 也许CSRF。

如果请求是通过iframe发送的,则浏览器将发送正确的引荐来源网址。


document.referrer一个小问题是,您必须从URL字符串中找出它是哪个域。 您必须谨慎操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM