Estoy trabajando con gatsby-plugin-csp y quiero saber si es posible agregar dos palabras clave 'unsafe-inline' y 'unsafe-eval' en el mismo script-scr y hacer que funcionen. ¿O necesito crear dos script-scr diferentes? Hay algunas fuentes que debo usar y algunas necesitan eval() y otras secuencias de comandos en línea.
¿Puedo hacer esto?
// In your gatsby-config.js module.exports = { plugins: [ { resolve: `gatsby-plugin-csp`, options: { disableOnDev: true, reportOnly: false, // Changes header to Content-Security-Policy-Report-Only for csp testing purposes mergeScriptHashes: true, // you can disable scripts sha256 hashes mergeStyleHashes: true, // you can disable styles sha256 hashes mergeDefaultDirectives: true, directives: { "script-src": "'self' 'unsafe-inline' 'unsafe-eval' www.example.com", "style-src": "'self' 'unsafe-inline'", "img-src": "'self' data: www.google-analytics.com" // you can add your directives or override defaults } } } ] };¿O debería hacer esto?
// In your gatsby-config.js module.exports = { plugins: [ { resolve: `gatsby-plugin-csp`, options: { disableOnDev: true, reportOnly: false, // Changes header to Content-Security-Policy-Report-Only for csp testing purposes mergeScriptHashes: true, // you can disable scripts sha256 hashes mergeStyleHashes: true, // you can disable styles sha256 hashes mergeDefaultDirectives: true, directives: { "script-src": "'self' 'unsafe-inline' www.example.com", "script-src": "'self' 'unsafe-eval' www.example.com", "style-src": "'self' 'unsafe-inline'", "img-src": "'self' data: www.google-analytics.com" // you can add your directives or override defaults } } } ] }; He intentado usar la primera opción tanto con 'inseguro en línea' como con 'inseguro-eval', en este caso la mitad de ellos dan errores como Refused to load the script 'http://embed.example.com/next/embed.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval'
También recibo este error Se Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.google-analytics.com https://www.googletagmanager.com
Cuando cambio el orden de las palabras clave y pongo 'unsafe-eval' y luego 'unsafe-inline', sigo recibiendo errores que me niegan a ejecutar otros scripts.
Podría tener dos CSP definidos, pero no la misma directiva dos veces en una política. Si define varias políticas, su contenido aún debe pasar todas las políticas, agregar otra solo puede hacerlo más estricto.
Su primer script-src es "'self' 'unsafe-inline' 'unsafe-eval' www.example.com", que permite cualquier cosa desde el mismo servidor (mismo host, mismo puerto y esquema igual o más seguro), scripts en línea, eval (nueva función(), setInterval(), setTimeout() y eval()) y scripts de www.example.com .
Su primer error es causado por un script de embed.example.com, que está bloqueado por su política que solo permite 'self' y www.example.com . Puede agregar embed.example.com o reemplazar www.example.com con *.example.com.
El segundo error probablemente esté relacionado con atributos de eventos en línea (como onclick, onload, etc.), haga clic en el enlace del mensaje de error para ver el código infractor. Por lo general, debe volver a escribirlos utilizando controladores de eventos. Es posible que pueda permitirlos con esfuerzos adicionales en el nivel 3 de CSP, pero no creo que haya compatibilidad total con el navegador todavía.