Content-Security-Policy HTTP 标头对 script-src 不起作用

Lan*_*ara 2 javascript browser security http http-headers

我对我的 CSP 标头遵循Google 的严格 CSP 政策,并且我正在正确添加随机数,但是我的脚本在浏览器中不断收到此错误:

拒绝加载脚本 ' http://localhost:8080/client/dist/inline.6e0c61259742e86be1dd.bundle.js ' 因为它违反了以下内容安全策略指令:“script-src nonce-XVlBzgbaiCMRAjWwhTHctcuAxhxKQFDaFxhxKQFDaFpLSEFWJFunc' -eval' '严格动态' https: http:"。存在“strict-dynamic”,因此禁用了基于主机的白名单。

如您所见,随机数与脚本中的随机数匹配:

<script type="text/javascript" src="/client/dist/inline.6e0c61259742e86be1dd.bundle.js" nonce="XVlBzgbaiCMRAjWwhTHctcuAxhxKQFDaFpLSjFbcXoEFfRsWxP"></script>
Run Code Online (Sandbox Code Playgroud)

这是我用于script-src. "%s" 表示随机生成的随机数,它将在响应设置标头之前进行插值:

script-src nonce-%s 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

小智 5

看起来您没有将 nonce 值括在单引号中 - 而不是nonce-%s它应该'nonce-%s'在您的策略中。

由于您使用的是 Google 示例,因此您可能知道使政策安全所需的其他指令(例如object-srcbase-uri),但为了以防万一,请确保使用CSP Evaluator 之类的工具来检查您的政策重做。