safari - 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.
我做错了什么还是野生动物园的常见怪癖之一?我的目标是只加载具有有效 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 的兼容性较差。
推荐阅读
- sql - SQL Server:将名称分配给局部变量时出错
- substrate - 如何实现 Sha3 算法调整难度
- javascript - 使用 Swagger UI 下载大文件
- jquery - 使用 jQuery 在 Vue.js 表单中设置值
- z3 - 有没有Z3的“参考手册”
- r - 使用 `dplyr` 按组划分行
- python - 替换表达式的内部出现
- memory-management - Camel + CassandraQL:处理表格而不将所有内容放入内存
- javascript - ReactJs:输入是一个空元素标签,既不能有`children`也不能使用`dangerouslySetInnerHTML`
- php - 如何在 mysql 中对 COUNT 进行 GROUP_CONTCAT?