当我有两个CSP(内容安全策略)策略-标头和元数据时,会发生什么情况?

时间:2018-07-03 07:37:22

标签: web browser content-security-policy

问题是有关CSP服务两次的问题:

如果有一个策略通过Content-Security-Policy HTTP响应标头提供服务,又有一个由<meta />元素指定的策略会发生什么情况?

这两个将以某种方式合并吗?还是哪个优先? (我在规范中找不到明确的信息)。

特定的用例可能是通过HTTP响应标头提供Report-to,并将所有其他限制放入<meta />元素中-因为其中一些是由webpack生成的-如果我不担心的话大约<meta />受HTTP响应标头策略影响。

2 个答案:

答案 0 :(得分:6)

如果您同时在Content-Security-Policy HTTP标头和meta元素中指定了CSP指令,则浏览器将使用限制最大的CSP指令,无论它们在何处指定。

https://w3c.github.io/webappsec-csp/#multiple-policies上查看有关多个策略的详细信息,在https://w3c.github.io/webappsec-csp/#meta-element上查看有关使用meta元素的详细信息:

  

注意:通过meta元素指定的策略将被强制执行   以及对受保护资源有效的任何其他策略,无论   指定位置。强制实施多项措施的一般影响   §8.1多个策略的作用

描述了这些策略。      

8.1。多种政策的效果

     

影响是将其他策略添加到策略列表中   强制只能进一步限制受保护资源的功能。

答案 1 :(得分:-1)

如您所见,是的,如果您做对的话,它们会合并。但是,我想补充一点,如果可能的话,应避免将meta标签与CSP标头一起使用。

为什么?它违背了“ CSP标头”的规范和精神,因此某些功能将无法正常工作:“注意:meta元素不支持Content-Security-Policy-Report-Only标头。report-uri,框架祖先和沙箱指令。”

公司发现很难以安全的方式实施CSP,同时又不破坏其网站或进行大量返工。因此,我制定了Enchanted Security,这是一种虚拟内容安全策略,可以通过检查页面上发出的网络请求以跟踪并阻止恶意请求来工作。它比CSP设置起来简单得多,并且具有您也无法从CSP获得的功能。