微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Safari 13.1.2无法识别内容安全策略哈希

我在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”赋予其可能性的脚本。

解决方法

在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版不兼容。

,

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。