Dom*_*lak 4 security w3c content-security-policy
我正在从源加载一个虚拟 JS 脚本,例如:
<script src="http://www.this-host.test/loadMe.js"></script>
CSP 标头设置为:
script-src 'self' 'strict-dynamic' 'nonce-{randomString}';
由于脚本源来自其原始主机并且标头允许CSP,因此loadMe.js应该加载和执行。
相反,我得到:
Refused to load the script 'http://www.this-host.test/loadMe.js' because it
violates the following Content Security Policy directive: "script-src 'self' 'strict-dynamic' 'nonce-{randomString}';.
'strict-dynamic' is present, so host-based whitelisting is disabled.
Run Code Online (Sandbox Code Playgroud)
Macintosh; Mac OS X 10_15_2已在、 浏览器上进行测试Chrome/79.0.3945.117, Firefox/71.0。
但我没有收到这条消息Safari。
也许值得注意的是我正在本地测试它。
无论如何,我不想使用nonce-{randomString}当标头允许从原始主机CSP加载资源时。
对此有什么想法吗?
根据带有 CSP 标头设置的csplite.comscript-src 'self' 'strict-dynamic' 'nonce-{randomString}'服务器...
“strict-dynamic”只能与“hash-value”或“nonce-value”一起使用,如果它们不存在,页面上的所有脚本都将被禁用,因为“strict-dynamic”会覆盖“unsafe-inline”操作并禁用基于主机的源的白名单,包括“self”令牌
...这告诉我,如果我的loadMe.js文件正在加载另一个文件(或不必),则nonce="{randomString}"无论文件是从同一主机还是从白名单主机加载,都必须设置 HTML 标记中的属性。