【发布时间】:2021-12-02 14:43:52
【问题描述】:
我们正在使用 netlify-cms,但不幸的是,它发出的代码会破坏 CONTENT-SECURITY-POLICY 'unsafe-eval'。
我尝试使用 nginx sub_filter 将nonce 属性添加到所有脚本标签:
server {
listen 80;
set_secure_random_alphanum $cspNonce 32;
sub_filter_once off;
sub_filter_types *;
sub_filter *CSP_NONCE* $cspNonce;
sub_filter '<script' '<script nonce=\'$cspNonce\' ';
sub_filter '<link' '<link nonce="$cspNonce" ';
然后我将随机数添加到标题中
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'nonce-$cspNonce' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' petstore.swagger.io;connect-src 'self' petstore.swagger.io";
我可以看到脚本标签中的随机数和标题都匹配:
<script nonce='72UTQMpuXxfwcevvTydWt8XvOSzKhhjM' >
标题
Content-Security-Policy default-src 'self'; script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'
但我仍然收到错误消息:
EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not a allowed source of script in the following Content Security Policy directive: "script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'
【问题讨论】:
标签: javascript nginx webpack content-security-policy