Content Security Policy是否兼容?

如果在不理解hash-source的浏览器中使用script-src: hash-source ,浏览器是否会忽略所有script-src:甚至是所有的CSP? 或者它只会忽略hash-source部分?

更一般地说,浏览器是否以前向兼容的方式实现CSP?


oreoshake关于向后兼容性的陈述是准确的。 确定元素匹配的过程在CSP草案标准的6.6.2.2节中描述:在存在hash-sourcenonce-source ,符合用户代理将忽略unsafe-inline

源列表允许给定类型的所有内联行为,前提是它包含关键字源表达式'unsafe-inline',并且不覆盖该表达式,如以下算法中所述:

[...]

如果表达式匹配nonce-source或hash-source语法,则返回“不允许”。

此外,CSP 2指定了解析具有未知令牌的源列表的过程,如下所示:

对于通过在源空间上拆分源列表返回的每个标记,如果标记与源表达式的语法匹配,请将标记添加到源表达式集。

否则,应该忽略它。 很明显,作者意图至少达到某种程度的向前兼容性。


不理解散列源元素的浏览器可能会在控制台中发出警告,但它们可能并不如此。 推荐的方法是使用用户代理嗅探来检测支持或发送'unsafe-inline'与你的散列源值。

理解哈希源的用户代理将忽略'unsafe-inline'而那些不会内部回退到'unsafe-inline'用户代理。 所以它是向后兼容的。

链接地址: http://www.djcxy.com/p/94183.html

上一篇: Is Content Security Policy forward compatible?

下一篇: Angular2 OverlayComponent not updating message variable