Automatisches Hinzufügen von Theme-Skripts zu CSP

Wir erhalten häufig Supportanfragen von Personen, die versuchen, externe JavaScript-Referenzen zu ihren Themes hinzuzufügen. Standardmäßig blockiert die Content Security Policy (CSP) dies, und der Administrator muss das Skript manuell zur CSP-Site-Einstellung (oder zu einer Theme-Einstellung/ einem Theme-Modifikator) hinzufügen.

@Johani hat jedoch einen hervorragenden Vorschlag gemacht, wie wir dies verbessern können.

Anstatt Theme-Entwickler zu bitten, Dinge in der Admin-Oberfläche hin und her zu kopieren und einzufügen, können wir dies automatisch erledigen. Wir können den gesamten HTML-Code eines Themes analysieren, die src-Attribute aller externen Skripte extrahieren und diese zur CSP hinzufügen.

Schließlich sind Computer bei repetitiven Kopiervorgängen viel besser als Menschen!

Ich habe einen PR eröffnet, der dies umsetzt:

https://github.com/discourse/discourse/pull/9531

Ich sehe einige Konsolenfehler lokal:

image

In Produktionsumgebungen sehe ich zudem Quellen, die im Format https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js... hinzugefügt werden, was redundant ist, da die Richtlinie bereits https://CDN_SERVER/theme-javascripts zulässt. Sollte die automatische Erweiterung nicht auf externe Skriptquellen beschränkt werden?

Danke @pmusaraj, ich habe einige zusätzliche Prüfungen hinzugefügt, um sicherzustellen, dass wir keine ungültigen URLs in der CSP bereitstellen, und habe außerdem dafür gesorgt, dass Theme-Javascript-URLs ausgeschlossen werden:

Das ist großartig. @merefield, ist das nicht super cool?