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

15 „Gefällt mir“

I am seeing some console errors locally:

In production environments, I also see sources added in the format https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js... which is redundant, because the policy already whitelists https://CDN_SERVER/theme-javascripts. Probably limit the auto-extension to to external script sources only?

6 „Gefällt mir“

Thanks @pmusaraj, I added some more checks to make sure we don’t serve invalid urls in the CSP, and also made sure theme-javascript URLs are excluded:

https://github.com/discourse/discourse/commit/f95609ae23ce1604b5f53c9d232e66895cfc9ee7

7 „Gefällt mir“

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

1 „Gefällt mir“