Aggiunta automatica degli script del tema a CSP

Spesso vediamo argomenti di supporto da persone che cercano di aggiungere riferimenti JavaScript esterni ai loro temi. Per impostazione predefinita, la Content Security Policy (CSP) blocca questa operazione e l’amministratore deve aggiungere manualmente lo script all’impostazione del sito CSP (o a un’impostazione/modificatore del tema).

Tuttavia, @Johani ha fatto un’ottima proposta su come possiamo migliorarlo.

Invece di chiedere agli sviluppatori di temi di copiare e incollare elementi nell’interfaccia di amministrazione, possiamo farlo automaticamente. Possiamo analizzare tutto l’HTML di un tema, estrarre l’attributo src di eventuali script esterni e aggiungerlo alla CSP.

Dopotutto, i computer sono molto più bravi degli umani nel copiare e incollare in modo ripetitivo!

Ho aperto una PR che implementa questa funzionalità:

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

Vedo alcuni errori nella console in locale:

image

Negli ambienti di produzione, vedo anche sorgenti aggiunte nel formato https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js..., il che è ridondante, poiché la policy già include https://CDN_SERVER/theme-javascripts nella whitelist. Probabilmente dovresti limitare l’estensione automatica solo alle sorgenti di script esterne?

Grazie @pmusaraj, ho aggiunto alcuni controlli aggiuntivi per assicurarci di non servire URL non validi nel CSP e ho anche escluso gli URL di theme-javascript:

È fantastico. @merefield, non è super figo?