Adicionando automaticamente scripts de tema ao CSP

Frequentemente vemos tópicos de suporte de pessoas tentando adicionar referências externas de JavaScript aos seus temas. Por padrão, a política de segurança de conteúdo bloqueará isso, e o administrador precisará adicionar manualmente o script à configuração do site CSP (ou a uma configuração/modificador do tema).

No entanto, @Johani fez uma excelente sugestão sobre como podemos melhorar isso.

Em vez de pedir aos desenvolvedores de temas que copiem e colem coisas na interface de administração do admin, podemos fazer isso automaticamente. Podemos analisar todo o HTML de um tema, extrair o src de quaisquer scripts externos e adicioná-lo ao CSP.

Afinal, computadores são muito melhores em copiar e colar repetidamente do que humanos!

Abri um PR que implementa isso:

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

Estou vendo alguns erros no console localmente:

image

Em ambientes de produção, também vejo fontes adicionadas no formato https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js..., o que é redundante, pois a política já permite https://CDN_SERVER/theme-javascripts. Talvez seja melhor limitar a extensão automática apenas a fontes de scripts externos?

Obrigado @pmusaraj, adicionei algumas verificações adicionais para garantir que não servimos URLs inválidas na CSP e também assegurei que as URLs de theme-javascript sejam excluídas:

Isso é incrível. @merefield, não é super legal?