Safari 13.1.2无法识别内容安全策略哈希

时间:2020-10-17 18:56:41

标签: safari content-security-policy

我在CSP中使用此脚本指令:

script-src 'sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4='

和一个脚本标签:

<script type="text/javascript" src="https://domain.xxx/frontframe.js" integrity="sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4=" crossorigin="anonymous"></script>

它可以在chrome和firefox中使用,但不能在Safari中使用,除非我将CSP更改为:

script-src 'self' 'sha256-0pXdwEz+mZ/xD0qLLNDMVgeorh4Qr4Fv06RA35mAlk4='

我在没有指令'self'的情况下遇到的错误是:

Refused to load https://domain.xxx/frontframe.js because it does not appear in script-src directive of the Content Security Policy.

我做错什么了吗?或者这是Safari常见的怪癖之一?我的目标是只加载具有有效sha256值的脚本,而不加载其他任何由指令“ self”赋予其可能性的脚本。

2 个答案:

答案 0 :(得分:1)

在CSP 2.0版之前,散列仅适用于内联脚本和样式。从CSP 3.0版开始,还允许将散列用于外部源。参见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src。 Safari可能与CSP 3.0版不兼容。

答案 1 :(得分:0)

iOS does not support SRIintegrity=属性)上的Safari。因此,Safari基于上面的属性,因此不支持哈希值以允许外部脚本。

更新:尽管MDN的信息是Safari 12.1.1仍support SRI

相关问题