X形框架-选项:火狐和Chrome中的允许

ruyhziif  于 2022-12-16  发布在  Go
关注(0)|答案(3)|浏览(514)

我正在为X-Frame-Options实现一个“传递”,让合作伙伴站点将我雇主的站点 Package 在iframe中,如本文所述:http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
(将URL拆分后发布)
简而言之,我们的合作伙伴的页面有一个iframe,它的URL指向我们的域。对于我们域中的任何页面,他们都会添加一个特殊的url参数,比如&@mykey=topleveldomain.com,告诉我们该页面的顶级域是什么。
我们的过滤器从URL中获取合作伙伴TLD(如果提供),并根据白名单进行验证。如果它在白名单上,我们将发送值为ALLOW-FROM topleveldomain.comX-Frame-Options标头(并添加cookie以供将来点击)。如果它不在白名单上,我们将发送SAMEORIGINDENY
问题是,发送ALLOW-FROM domain似乎会导致最新的Firefox和Google Chrome整体上没有运行。至少IE8似乎正确地实现了ALLOW-FROM
查看此页面:http://www.enhanceie.com/test/clickjack。就在“应该显示内容”的第5个框后面,是一个不应该显示内容的框,但它确实显示了内容。在本例中,iframe中的页面正在发送X-Frame-Options: ALLOW-FROM http://www.debugtheweb.com,这是一个与http://www.enhanceie.com截然不同的TLD。然而,框架仍然显示内容。
关于X-Frame-Options是否真的在相关的(桌面)浏览器上用ALLOW-FROM实现了呢?也许语法已经改变了?
一些相关链接:

0x6upsns

0x6upsns1#

Chrome或Safari不支持ALLOW-FROM。请参阅MDN文章:https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
你已经在做一个自定义的头文件并发送正确的数据,当你检测到它来自一个有效的合作伙伴时,你不能只排除头文件,并将DENY添加到每个其他的请求中吗?当你已经在动态地构建逻辑时,我看不到AllowFrom的好处?

yk9xbfzb

yk9xbfzb2#

我发布了这个问题,从来没有看到反馈(几个月后才来的,看起来:)。
Kinlan mentioned一样,并非所有浏览器都支持ALLOW-FROM作为X-Frame-Options值。
解决方案是根据浏览器类型进行分支。对于IE,运送X-Frame-Options。对于其他所有人,运送X-Content-Security-Policy
希望这能有所帮助,很抱歉花了这么长时间才结束这个循环!

iyr7buue

iyr7buue3#

对于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标头(在控制台上输出错误)。
详情请看我在这里的回答。

相关问题