Problema con Strict Dynamic y CSP en el Widget de Atlassian
Estoy encontrando un problema con la Política de Seguridad de Contenido (CSP) después de actualizar a la v3.3.0.beta1. Específicamente, estoy intentando incrustar un widget de Atlassian en la cabecera de mi contenedor, el cual fue creado antes de esta actualización.
Me he asegurado de incluir el nonce, pero me encuentro con los siguientes errores:
embed.js:1 Refused to set the document's base URI to 'https://jsd-widget.atlassian.com/' because it violates the following Content Security Policy directive: "base-uri 'self'".
embed.js:1 Refused to load the script 'https://jsd-widget.atlassian.com/assets/iframe.js' because it violates the following Content Security Policy directive: "script-src 'nonce-YAnMdLzmoWqLis3WXiQKjxdHk' 'strict-dynamic'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
Además, encontré una sugerencia en una publicación anterior para cargar el script dinámicamente de esta manera:
var s = document.createElement('script');
s.src = "https://jsd-widget.atlassian.com/assets/embed.js";
document.body.appendChild(s);
Sin embargo, esto no parece resolver el problema. Claramente me falta algo sobre cómo strict-dynamic se supone que debe funcionar en este contexto.
¿Alguien puede ayudarme a entender por qué ocurren estos errores y cómo podría resolverlos? ¡Cualquier orientación sería apreciada!
Curiosamente, estaba revisando un problema casi idéntico.
Puedo reproducir un problema similar en la última versión que se reconstruyó recientemente.
Estoy recibiendo:
[Solo informe] Se denegó la carga del script 'https://www.mytestsite.com/mini-profiler-resources/includes.js?v=116e2a6fd81c286e004e2a0afb03baa1' porque viola la siguiente directiva de Política de Seguridad de Contenido: "script-src 'nonce-ZSPIEwDBo6e07GuQMDkOFZerD' 'strict-dynamic'". Tenga en cuenta que 'script-src-elem' no se estableció explícitamente, por lo que se utiliza 'script-src' como recurso de reserva.
¿Alguno de ustedes puede compartir un enlace a un sitio que muestre este problema? Estaré encantado de echarle un vistazo rápido
Si has añadido esto a través de componentes de tema, entonces deberías eliminar la parte nonce=. Discourse lo añadirá automáticamente (y creo que añadirlo tú mismo puede romper el sistema automático)
Hola David, muchas gracias.
Por la rápida respuesta.
El código que estoy añadiendo es <script data-jsd-embedded data-key="bla" data-base-url="https://jsd-widget.atlassian.com" src="https://jsd-widget.atlassian.com/assets/embed.js"></script>
Parece que el script embed.js se está ejecutando correctamente, por lo que el lado de Discourse está funcionando.
Sin embargo, luego intenta crear un iframe de mismo origen, que incluye etiquetas de script ‘parser-inserted’. Ese tipo de estrategia no es compatible con una CSP estricta y dinámica.
Así que creo que esto es algo que Atlassian necesitaría arreglar. Me encontré con este problema en su rastreador que parece relevante (aunque no tiene muchos detalles, ni una resolución )