Estamos usando netlify-cms que desafortunadamente emite un código que rompe CONTENT-SECURITY-POLICY 'unsafe-eval' .
He intentado agregar atributos nonce a todas las etiquetas de script usando 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" ';Luego agrego el nonce al encabezado también
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";Puedo ver que los nonces en las etiquetas del script y el encabezado coinciden:
<script nonce='72UTQMpuXxfwcevvTydWt8XvOSzKhhjM' >encabezamiento
Content-Security-Policy default-src 'self'; script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'Pero sigo recibiendo el mensaje de error:
EvalError: se negó a evaluar una cadena como JavaScript porque 'unsafe-eval' no es una fuente de script permitida en la siguiente directiva de Política de seguridad de contenido: "script-src 'self' 'nonce-77Fdz6e1aBiGr5b8qcReeUgkO2NtJnSm'
Al usar 'nonce-value' puede deshacerse solo de 'unsafe-inline' , pero no de 'unsafe-eval' .
Se requiere 'unsafe-eval' en Netlify para compilar código JSON a JS, pero también puede deshacerse de 'unsafe-eval' . Simplemente actualice ajv-json-loader para usar AJV 7 y el modo independiente y configure la configuración del paquete web para usar el cargador actualizado. Vea el meollo de la cuestión aquí .