CSP-Fehler beim Hinzufügen eines Skripts über eine Theme-Komponente

Problem mit Strict Dynamic und CSP bei Atlassian Widget

Ich stoße nach dem Update auf v3.3.0.beta1 auf ein Problem mit der Content Security Policy (CSP). Insbesondere versuche ich, ein Atlassian-Widget in den Header meines Containers einzubetten, der vor diesem Update erstellt wurde.

Hier ist, was ich zum Header hinzugefügt habe:

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

Ich habe darauf geachtet, die Nonce einzufügen, stoße jedoch auf die folgenden Fehler:

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.

Zusätzlich bin ich in einem früheren Beitrag auf den Vorschlag gestoßen, das Skript dynamisch wie folgt zu laden:

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

Dies scheint das Problem jedoch nicht zu beheben. Mir ist eindeutig nicht klar, wie strict-dynamic in diesem Kontext funktionieren soll.

Kann mir jemand helfen zu verstehen, warum diese Fehler auftreten und wie ich sie beheben kann? Jede Hilfe wäre willkommen!

3 „Gefällt mir“

Interessanterweise habe ich mir gerade ein fast identisches Problem angesehen.

Ich kann ein ähnliches Problem auf der neuesten, kürzlich neu erstellten Version reproduzieren.

Ich erhalte:

[Nur Bericht] Das Laden des Skripts 'https://www.mytestsite.com/mini-profiler-resources/includes.js?v=116e2a6fd81c286e004e2a0afb03baa1' wurde verweigert, da es die folgende Content Security Policy-Direktive verletzt: „script-src 'nonce-ZSPIEwDBo6e07GuQMDkOFZerD' 'strict-dynamic'“. Beachten Sie, dass 'script-src-elem' nicht explizit festgelegt wurde, daher wird 'script-src' als Fallback verwendet.
3 „Gefällt mir“

Können Sie oder Sie einen Link zu einer Website teilen, auf der dieses Problem angezeigt wird? Ich schaue gerne kurz vorbei :eyes:

Wenn Sie dies über ein Theme-Komponenten hinzugefügt haben, sollten Sie den Teil nonce= entfernen. Discourse fügt ihn automatisch hinzu (und ich glaube, wenn Sie ihn selbst hinzufügen, kann dies das automatische System beeinträchtigen)

3 „Gefällt mir“

Um diesen Fall abzuschließen – @merefield und ich haben dies per PM besprochen und es auf ein spezifisches Problem nur für Berichte zurückgeführt. Behebung hier: FIX: Mini-profiler CSP nonce when in report-only mode by davidtaylorhq · Pull Request #28664 · discourse/discourse · GitHub

Es scheint sich also um ein anderes Problem zu handeln als das, das @devops1 sieht.

4 „Gefällt mir“

Hallo David, vielen Dank.
Für die schnelle Antwort.

Der Code, den ich hinzufüge, ist
<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>

Ich habe die Nonce wie gewünscht entfernt.

Dies ist die Website https://onlinecommunity.stroke.org.uk/
Ich habe „content security policy report only“ aktiviert.

2 „Gefällt mir“

Ist die Theme-Komponente aktiviert? Ich sehe kein Atlassian-Skript, wenn ich in den Entwicklertools nachsehe.

1 „Gefällt mir“

Ich denke, das sollte jetzt funktionieren, ich habe das Skript im Seitenquelltext gefunden.

2 „Gefällt mir“

Es scheint, dass das embed.js-Skript erfolgreich ausgeführt wird, sodass die Discourse-Seite funktioniert.

Es versucht jedoch, einen Same-Origin-Iframe zu erstellen, der „parser-inserted“-Skript-Tags enthält. Diese Art von Strategie ist nicht mit einem strikt-dynamischen CSP kompatibel.

Daher denke ich, dass dies etwas ist, das Atlassian beheben müsste. Ich bin auf dieses Problem in ihrem Tracker gestoßen, das relevant zu sein scheint (obwohl es nicht viele Details oder eine Lösung enthält :cry:).

2 „Gefällt mir“

Vielen Dank, dass Sie sich für mich um das Problem gekümmert haben, David.

2 „Gefällt mir“

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