我正在关注Google's strict CSP policy我的CSP标头,我正在添加nonce,但是我在浏览器中不断收到此错误:
拒绝加载脚本 ' http://localhost:8080/client/dist/inline.6e0c61259742e86be1dd.bundle.js' 因为它违反了以下内容安全策略指令: " script-src nonce-XVlBzgbaiCMRAjWwhTHctcuAxhxKQFDaFpLSjFbcXoEFfRsWxP '不安全直插' '不安全-EVAL' '严格动态' https:http:"。 '严格动态'存在,因此禁用基于主机的白名单。
如您所见,nonce匹配脚本中的nonce:
<script type="text/javascript" src="/client/dist/inline.6e0c61259742e86be1dd.bundle.js" nonce="XVlBzgbaiCMRAjWwhTHctcuAxhxKQFDaFpLSjFbcXoEFfRsWxP"></script>
这是我用于script-src
的CSP标头。 &#34;%s&#34;表示随机生成的nonce,它将在响应上设置标头之前进行插值:
script-src nonce-%s 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
我在这里做错了什么?
答案 0 :(得分:4)
您似乎没有将nonce值括在单引号中 - 而不是nonce-%s
,它应该在您的政策中'nonce-%s'
。
由于您使用的是Google示例,因此您可能知道使策略安全所需的其他指令(例如object-src
和base-uri
),但为了以防万一,请务必使用工具就像CSP Evaluator完成一样,在完成后检查你的政策。