我正在为 X-Frame-Options
实现“传递”,让合作伙伴网站将我雇主的网站包装在 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.com
的 X-Frame-Options
header (并为将来的点击添加 cookie)。如果它不在我们的白名单中,我们将发送 SAMEORIGIN
或 DENY
。
问题在于,对于最新的 Firefox 和 Google Chrome 来说,发送 ALLOW-FROM domain
结果似乎总体上无操作。至少 IE8 似乎正确实现了 ALLOW-FROM
。
查看此页面:http://www.enhanceie.com/test/clickjack 。在第 5 个(共 5 个)框“应该显示内容”之后,有一个框不应该显示内容,但它确实显示了内容。在这种情况下,iframe 中的页面正在发送 X-Frame-Options: ALLOW-FROM http://www.debugtheweb.com
,这是一个与 http://www 截然不同的 TLD .enhanceie.com
。然而,框架仍然显示内容。
对于X-Frame-Options
是否真正在相关(桌面)浏览器上使用ALLOW-FROM
实现有什么见解吗?也许语法已经改变?
一些感兴趣的链接:
- 关于 x-frame-options 的 RFC 草案:https://datatracker.ietf.org/doc/html/draft-gondrom-frame-options-01
- developer.mozilla 文章讨论了作为 2 选项 header (sameorigin 或拒绝)的 header 。 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 个值:添加allow-from origin 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
您已经在制作自定义 header 并使用正确的数据发送它,当您检测到它来自有效合作伙伴时,您是否可以直接排除该 header 并将 DENY 添加到每个其他请求?当您已经动态构建逻辑时,我没有看到AllowFrom 的好处?
关于firefox - X-Frame-Options:Firefox 和 Chrome 中的 ALLOW-FROM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10658435/