Chrome API 的 list 版本 2 移除了执行不安全评估的能力。这意味着使用 eval 函数或通常从文本动态创建函数。
似乎大多数(如果不是全部)Javascript 模板引擎都这样做。我使用的是 Jaml,但我尝试了其他几种方法,例如 backbone.js(它实际上使用了 underscore.js 的模板引擎),但没有成功。
This comment on the Chromium project似乎表明有很多图书馆都受到此影响。
我认为 Angular.js 有一个 CSP 安全模式,但 Angular.js 对于我们需要的东西来说实在是太大了。我们只需要一个相当基本的模板引擎,不需要模型或 Controller 等。有人知道那里有任何 CSP 兼容模板引擎吗?
最佳答案
此问题的最佳解决方案是在部署扩展之前预编译模板。两者 handlebarsjs和 eco提供预编译作为一项功能。我实际上写了一个 blog post更深入。
关于与 Chrome 的内容安全策略一起工作的 Javascript 模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489495/