我正在为 X-Frame-Options
实现一个“ pass-through”,让合作伙伴站点将我雇主的站点包装在一个 iframe 中,如本文所述: http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
(拆分网址发布)
简而言之,我们合作伙伴的页面有一个 iframe,其 URL 与我们的域名相对应。
对于我们域中的任何页面,他们都会添加一个特殊的 url 参数,比如 &@mykey=topleveldomain.com
,告诉我们页面的顶级域是什么。
我们的过滤器从 URL 中获取合作伙伴 TLD (如果提供的话) ,并根据白名单对其进行验证。如果它在列表中,我们将 X-Frame-Options
头的值设置为 ALLOW-FROM topleveldomain.com
(并为以后的点击添加一个 cookie)。如果它不在我们的白名单上,我们发货 SAMEORIGIN
或 DENY
。
问题是它看起来像发送 ALLOW-FROM domain
结果在最新的火狐和谷歌浏览器的整体无操作。至少 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
实现,有什么见解吗?也许语法改变了?
一些感兴趣的链接: