X-Frame-Options:允许从Firefox和铬

我正在为X-Frame-Options实现一个“传递”,以让合作伙伴网站将我的雇主的网站包装在iframe中,如下所示: http : //blogs.msdn.com/b/ieinternals/archive/ 2010/03/30 /打击-点击劫持与- X框-options.aspx

(分割URLS发布)

简而言之,我们合作伙伴的网页上有一个iframe,其中包含一个针对我们网域的url。 对于我们域中的任何页面,他们都会添加一个特殊的url参数,比如&@mykey=topleveldomain.com ,告诉我们页面的顶级域名是什么。

我们的filter会从URL中提取合作伙伴的TLD(如果提供),并根据白名单进行validation。 如果它在列表中,我们将X-Frame-Options标头的值为ALLOW-FROM topleveldomain.com (并为将来的点击添加一个cookie)。 如果它不在我们的白名单上,我们运送SAMEORIGINDENY

问题是它看起来像发送ALLOW-FROM domain结果一样没有运行最新的Firefox和谷歌浏览器。 IE8,至less,似乎是正确实施ALLOW-FROM

看看这个页面: http : //www.enhanceie.com/test/clickjack 。 在第5(5)箱“应该显示内容”之后,是一个不应该显示内容的框,但它是。 在这种情况下,iframe中的页面正在发送X-Frame-Options: ALLOW-FROM http://www.debugtheweb.com ,这是一个与http://www.enhanceie.com不同的TLD。 然而,框架仍然显示内容。

任何有关X-Frame-Options是否真正通过相关(桌面)浏览器的ALLOW-FROM实现的见解? 也许语法已经改变了?

一些感兴趣的链接:

  • 在x-frame-options上草拟rfc: http : //tools.ietf.org/html/draft-gondrom-frame-options-01
  • developer.mozilla文章讨论标题作为2选项标题(sameorigin或拒绝)。 https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
  • 发起整个事情的MSDN博客: http : //blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx
  • MSDN博客,谈到3个值:添加允许来源http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx

Chrome或Safari不支持ALLOW-FROM。 查看MDN文章: https : //developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options

您已经在完成自定义标题并使用正确数据发送它的工作,当您检测到标题来自有效合作伙伴并将DENY添加到每个其他请求时,是否可以不排除标题? 当你已经dynamicbuild立逻辑了,我看不到AllowFrom的好处吗?

我发布了这个问题,从来没有看到反馈(几个月后,似乎:)。

正如Kinlan所说,ALLOW-FROM在所有浏览器中都不被支持为X-Frame-Options值。

解决scheme是基于浏览器types进行分支。 对于IE,出货X-Frame-Options 。 对于其他人,请发送X-Content-Security-Policy 。

希望这会有所帮助,并抱歉花了这么长时间来closures循环!

对于Chrome,而不是

 response.AppendHeader("X-Frame-Options", "ALLOW-FROM " + host); 

您需要添加Content-Security-Policy

 string selfAuth = System.Web.HttpContext.Current.Request.Url.Authority; string refAuth = System.Web.HttpContext.Current.Request.UrlReferrer.Authority; response.AppendHeader("Content-Security-Policy", "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: *.msecnd.net vortex.data.microsoft.com " + selfAuth + " " + refAuth); 

到HTTP响应头。
请注意,这假定您在服务器上检查是否允许refAuth。
此外,请注意,您需要进行浏览器检测,以避免为Chrome添加allow-from标题(在控制台上输出错误)。

有关详细信息,请参阅我的答案。