Error CSP al añadir un script mediante un componente de tema

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.

Aquí está lo que he añadido a la cabecera:

<script data-jsd-embedded nonce="{{content_security_policy_nonce}}" data-key="bla" data-base-url="https://jsd-widget.atlassian.com" src="https://jsd-widget.atlassian.com/assets/embed.js"></script>

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!

3 Me gusta

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.
3 Me gusta

¿Alguno de ustedes puede compartir un enlace a un sitio que muestre este problema? Estaré encantado de echarle un vistazo rápido :eyes:

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)

3 Me gusta

Cerrando el ciclo sobre esto: @merefield y yo discutimos por mensaje privado y lo rastreamos hasta un problema específico de “solo informe”. Corrección aquí: FIX: Mini-profiler CSP nonce when in report-only mode by davidtaylorhq · Pull Request #28664 · discourse/discourse · GitHub

Así que parece que este es un problema diferente al que está viendo @devops1

4 Me gusta

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>

He eliminado el nonce como se solicitó.

Este es el sitio https://onlinecommunity.stroke.org.uk/
He activado el modo de solo informe de la política de seguridad de contenido.

2 Me gusta

¿Está habilitado el componente de tema? No veo ningún script de Atlassian cuando reviso en las herramientas de desarrollador.

1 me gusta

Creo que eso debería funcionar ahora que encontré el script en el código fuente de la página.

2 Me gusta

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 :cry:)

2 Me gusta

Muchas gracias por investigar el problema por mí, David.

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.