Firefox中的帧的X-Frame-Options和Content-Security-Policy

Ser*_*nov 5 security firefox frame x-frame-options content-security-policy

内容安全策略规范说

frame-ancestors指令废弃了X-Frame-Options标头.如果资源同时具有两个策略,则应该强制执行frame-ancestors策略,并且应该忽略X-Frame-Options策略.

因此,根据我的理解,如果两者Content-Security-PolicyX-Frame-Options标题都存在,那么X-Frame-Options应该被忽略.

我有一个带有两个标题的Web应用程序,看起来像Firefox 38忽略Content-Security-Policy标题并使用X-Frame-Options标题代替.

我的示例标题是:

Content-Security-Policy:frame-ancestors 'self' local.com *.local.com 
X-Frame-Options:Allow-From http://local.com
Run Code Online (Sandbox Code Playgroud)

我希望我的框架可以从local.com和所有子域访问.Local.com就是一个例子.如果X-Frame-Options标题存在,那么它只允许http://local.com,但如果我删除它,那么Firefox使用Content-Security-Policy标题并适用于域和子域.

这是否意味着Firefox没有实现这一部分?或者它只是太新的规范而且Firefox还没有实现它?有没有其他方法可以强制Content-Security-Policy使用标头?

我知道Chrome工作正常,Content-Security-PolicyIE可以正常使用X-Frame-Options,但看起来我无法组合两个标头,因为Firefox的工作方式不正确.

一种可能的方法是X-Frame-Options仅针对IE 发送,而Content-Security-Policy针对所有其他方式,但是有更好的方法吗?

谢谢!

kra*_*etz 5

frame-ancestors只出现在CSP Level 2中(参见更改日志),所以Firefox 38很可能还没有实现它.

您可以通过观察JavaScript控制台轻松验证 - 浏览器将显示有关它不理解的每个CSP指令的警告.

您也可以从测试版频道下载Firefox ,看看它是否有所不同,但显然如果您只想为生产网站构建可互操作的解决方案,它将无济于事......