内容安全政策是否向前兼容?

Jon*_* H. 7 content-security-policy

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

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

Nik*_* B. 2

oreoshake 关于向后兼容性的说法是准确的。CSP 标准草案第 6.6.2.2 节描述了确定元素匹配的过程: 在存在hash-source或 的情况下nonce-sourceunsafe-inline符合要求的用户代理会忽略 :

如果源列表包含关键字源表达式“unsafe-inline”,则允许给定类型的所有内联行为,并且不会覆盖该表达式,如以下算法所述:

[...]

如果表达式与随机数源或哈希源语法匹配,则返回“不允许”。

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

对于按空格分割源列表返回的每个标记,如果该标记与源表达式的语法匹配,则将该标记添加到源表达式集中。

否则,应忽略它。很明显,作者希望至少具有一定程度的前向兼容性。