我們正在使用 netlify-cms,不幸的是它會發出破壞 CONTENT-SECURITY-POLICY 的代碼'unsafe-eval'。
我嘗試nonce使用 nginx 為所有腳本標簽添加屬性sub_filter:
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:拒絕將字串評估為 JavaScript,因為在以下內容安全策略指令中,“unsafe-eval”不是允許的腳本來源:“script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'
uj5u.com熱心網友回復:
通過使用,'nonce-value'您只能擺脫'unsafe-inline',但不能擺脫'unsafe-eval'.
'unsafe-eval'在 Netlify 中需要將 JSON 編譯為 JS 代碼,但您也可以擺脫'unsafe-eval'。只需更新ajv-json-loader以使用 AJV 7 和獨立模式并配置 webpack 配置以使用更新的加載器。在這里查看細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/377431.html
標籤:javascript nginx 网络包 内容安全策略
