X-Frame-Options:允许firefox和chrome中的FROM
我正在为X-Frame-Options:允许firefox和chrome中的FROM,firefox,google-chrome,x-frame-options,clickjacking,Firefox,Google Chrome,X Frame Options,Clickjacking,我正在为X-Frame-Options实现一个“传递”,让合作伙伴站点将我雇主的站点包装在一个iframe中,如本文所述: (拆分要发布的URL) 简而言之,我们的合作伙伴的页面有一个iframe,其中有一个针对我们域的URL。 对于我们域中的任何页面,他们都会添加一个特殊的url参数,如&@mykey=topleveldomain.com,告诉我们页面的顶级域是什么 我们的过滤器从URL中提取合作伙伴TLD(如果提供),并根据白名单进行验证。如果它在列表中,我们将从topleveldomain
X-Frame-Options
实现一个“传递”,让合作伙伴站点将我雇主的站点包装在一个iframe中,如本文所述:
(拆分要发布的URL)
简而言之,我们的合作伙伴的页面有一个iframe,其中有一个针对我们域的URL。
对于我们域中的任何页面,他们都会添加一个特殊的url参数,如&@mykey=topleveldomain.com
,告诉我们页面的顶级域是什么
我们的过滤器从URL中提取合作伙伴TLD(如果提供),并根据白名单进行验证。如果它在列表中,我们将从topleveldomain.com提供带有值ALLOW-FROM
的X-Frame-Options
标题(并添加一个cookie供以后单击)。如果它不在我们的白名单上,我们将装运SAMEORIGIN
或DENY
问题是,发送ALLOW-FROM-domain
似乎会导致最新Firefox和Google Chrome的整体性能下降。至少IE8似乎正确地实现了ALLOW-FROM
请签出此页面:。在“应该显示内容”的第5个(共5个)框之后,是一个不应该显示内容的框,但它是。在这种情况下,iframe中的页面正在发送X-Frame-Options:ALLOW-FROMhttp://www.debugtheweb.com
,与http://www.enhanceie.com
。然而,框架仍然显示内容
关于X-Frame-Options
是否真正通过ALLOW-FROM
跨相关(桌面)浏览器实现,有什么见解吗?也许语法已经改变了
一些有趣的链接:
- x-frame-options上的rfc草案:
- developer.mozilla文章讨论了作为2选项头的头(sameorigin或deny)李>
- 发起整个事件的msdn博客:
- msdn博客讨论了3个值:从源代码添加allow
您已经在制作自定义头并将其与正确的数据一起发送,当您检测到该头来自有效的合作伙伴并向每个其他请求添加拒绝时,是否可以将其排除在外?当您已经在动态构建逻辑时,我看不到AllowFrom的好处?我发布了这个问题,但从未看到过反馈(似乎是在几个月后出现的:) 正如Kinlan提到的,ALLOW-FROM在所有浏览器中都不支持作为X-Frame-Options值 解决方案是基于浏览器类型进行分支。为了我,船。对于其他人,船 希望这能有所帮助,很抱歉花了这么长时间才结束这个循环 用于铬,而不是
response.AppendHeader(“X-Frame-Options”、“ALLOW-FROM”+主机);
您需要添加内容安全策略
string selfAuth=System.Web.HttpContext.Current.Request.Url.Authority;
字符串refAuth=System.Web.HttpContext.Current.Request.urlreferer.Authority;
response.AppendHeader(“内容安全策略”,“默认src'self'”不安全内联“不安全评估”数据:*.msecnd.net vortex.data.microsoft.com“+selfAuth+”+refAuth);
到HTTP响应头注意,这假设您在服务器上检查是否允许重新授权
另外,请注意,您需要进行浏览器检测,以避免为Chrome添加
allow from
标题(控制台上的输出错误)
有关详细信息,请参见,如果您能自己找到更多答案,请随时发布您自己的答案。你会得到我的一票!昨天为Firefox添加了一个补丁:我们将看看它是否能够通过审查并很快发布到您附近的浏览器中……这是一个古老的问题,但对于子孙后代来说——您描述的方法(将TLD作为参数传递给iframe)将很容易被任何想要嵌入您的内容的人击败。他们只是查看源代码,查看您正在做什么,然后复制/粘贴。由于ALLOW-FROM还不可靠,因此可以使用共享秘密,该秘密在当前时间(在窗口内)以加密方式散列,并包含在iframe URL中。在iframe端,验证哈希共享机密。内容窃贼可以窃取该散列,但它只能在一个短暂的窗口内工作,有效阻止未经授权的嵌入。他在链接的msdn页面上的令牌标题下实施4步安全措施,不幸的是,这在chrome和safari中不起作用。是的,我知道,这就是为什么我建议反其道而行之。那时他会看着referer头,这是一个不错的方法,尽管referer欺骗仍然存在。如果所有有问题的页面都是HTTPS,那么要做到这一点就要困难得多。AllowFrom当然会更好。谢谢你的回复和建议!对不起,打断我的解释!我们认为来自客户端的HTTP_REFERER是一种不可靠的机制,用于控制决策。此外,我们发现一些浏览器(我特别相信IE)不会从包含顶层iframe的页面传递HTTP_REFERER。因此,我们无法可靠地从服务器上辨别谁在陷害我们。在其当前形式中,
X-Content-Security-Policy
没有为ALLOW-from
提供跨浏览器模拟。Firefox支持帧祖先
,并且即将推出的规范支持帧选项
。目前,Chrome只支持运行时标志后面的帧祖先frame src
可用,但这是控制子帧的父帧,而不是指定其允许的父帧的子帧。2018更新:。如果要避免点击劫持,可以使用内容安全策略,但绝对不能通过添加“default src”属性,因为这具有完全不同的效果。您需要使用“框架祖先”。这与X-Frame-Options类似,并且它更灵活,因为它允许您指定多帧