Erreur CSP lors de l'ajout d'un script via un composant de thème

Problème avec Strict Dynamic et CSP sur le widget Atlassian

Je rencontre un problème avec la politique de sécurité du contenu (CSP) après la mise à jour vers la version v3.3.0.beta1. Plus précisément, j’essaie d’intégrer un widget Atlassian dans l’en-tête de mon conteneur, qui a été créé avant cette mise à jour.

Voici ce que j’ai ajouté à l’en-tête :

<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>

J’ai veillé à inclure le nonce, mais je rencontre les erreurs suivantes :

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.

De plus, j’ai trouvé une suggestion dans un article précédent pour charger le script dynamiquement comme ceci :

var s = document.createElement('script');
s.src = "https://jsd-widget.atlassian.com/assets/embed.js";
document.body.appendChild(s);

Cependant, cela ne semble pas résoudre le problème. Il me manque clairement quelque chose sur la façon dont strict-dynamic est censé fonctionner dans ce contexte.

Quelqu’un peut-il m’aider à comprendre pourquoi ces erreurs se produisent et comment je pourrais les résoudre ? Toute aide serait appréciée !

3 « J'aime »

Assez drôlement, je regardais un problème presque identique.

Je peux reproduire un problème similaire sur la dernière version qui a été récemment reconstruite.

J’obtiens :

[Report Only] Refused to load the script 'https://www.mytestsite.com/mini-profiler-resources/includes.js?v=116e2a6fd81c286e004e2a0afb03baa1' because it violates the following Content Security Policy directive: "script-src 'nonce-ZSPIEwDBo6e07GuQMDkOFZerD' 'strict-dynamic'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
3 « J'aime »

L’un de vous deux peut-il partager un lien vers un site montrant ce problème ? Je suis heureux d’y jeter un coup d’œil rapide :eyes:

Si vous avez ajouté cela via des composants de thème, vous devriez supprimer la partie nonce=. Discourse l’ajoutera automatiquement (et je pense que l’ajouter vous-même pourrait casser le système automatique)

3 « J'aime »

Pour clore ce sujet - @merefield et moi en avons discuté par message privé, et avons identifié le problème comme étant spécifique à « report-only ». Correction ici : FIX: Mini-profiler CSP nonce when in report-only mode by davidtaylorhq · Pull Request #28664 · discourse/discourse · GitHub

Il semble donc qu’il s’agisse d’un problème différent de celui que @devops1 rencontre.

4 « J'aime »

Salut David Merci beaucoup.
Pour la réponse rapide
Le code que j’ajoute est
<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>

J’ai supprimé le nonce comme demandé.

Ceci est le site https://onlinecommunity.stroke.org.uk/
J’ai activé le mode “report only” pour la politique de sécurité du contenu

2 « J'aime »

Le composant de thème est-il activé ? Je ne vois aucun script Atlassian lorsque je vérifie dans les outils de développement.

1 « J'aime »

Je pense que cela devrait fonctionner maintenant que j’ai trouvé le script dans le code source de la page.

2 « J'aime »

Il semble que le script embed.js s’exécute correctement, donc le côté Discourse fonctionne.

Cependant, il essaie ensuite de créer un iframe de même origine, qui inclut des balises de script « parser-inserted ». Ce type de stratégie n’est pas compatible avec une politique de sécurité de contenu (CSP) stricte et dynamique.

Je pense donc que c’est quelque chose qu’Atlassian devrait corriger. Je suis tombé sur ce problème sur leur tracker qui semble pertinent (bien qu’il n’y ait pas beaucoup de détails, ni de résolution :cry:)

2 « J'aime »

Merci beaucoup d’avoir examiné le problème pour moi, David.

2 « J'aime »

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