问题是有关CSP服务两次的问题:
如果有一个策略通过Content-Security-Policy
HTTP响应标头提供服务,又有一个由<meta />
元素指定的策略会发生什么情况?
这两个将以某种方式合并吗?还是哪个优先? (我在规范中找不到明确的信息)。
特定的用例可能是通过HTTP响应标头提供Report-to
,并将所有其他限制放入<meta />
元素中-因为其中一些是由webpack生成的-如果我不担心的话大约<meta />
受HTTP响应标头策略影响。
答案 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获得的功能。