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

15 curtidas

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 curtidas

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 curtidas

This is awesome. @merefield isn’t this super cool?

1 curtida