自动将主题脚本添加到CSP

我们经常看到用户尝试向主题添加外部 JavaScript 引用时提交的支持主题。默认情况下,内容安全策略(CSP)会阻止此类操作,管理员必须手动将脚本添加到 CSP 站点设置(或主题设置/修饰符)中。

不过,@Johani 提出了一个出色的改进建议。

与其让主题开发者在管理界面中手动复制粘贴,我们可以自动完成这一过程。我们可以解析主题中的所有 HTML,提取任何外部脚本的 src 属性,并将其添加到 CSP 中。

毕竟,计算机在执行重复性复制粘贴任务方面远比人类高效!

我已提交了一个实现该功能的 PR:

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

15 个赞

我在本地环境中看到了一些控制台错误:

image

在生产环境中,我还看到以 https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js... 格式添加的源,这是多余的,因为策略已经允许了 https://CDN_SERVER/theme-javascripts。是否可以将自动扩展限制为仅适用于外部脚本源?

6 个赞

感谢 @pmusaraj,我添加了一些额外的检查,以确保我们不会在 CSP 中提供无效的 URL,同时也确保排除了 theme-javascript 的 URL:

7 个赞

太棒了。@merefield 这难道不超级酷吗?

1 个赞