使用underscore.js时,如何解决浏览器CSP错误

时间:2015-09-29 22:45:09

标签: javascript templates underscore.js content-security-policy underscore.js-templating

过去几年我一直在开发一个Web应用程序,并且最近通过添加内容安全策略使其更加安全。

我已经能够解决我发现的大多数问题,但我无法解决剩下的一个问题。每当在underscore.js中出现模板时,CSP就会抱怨错误消息,因为我认为它使用了禁忌;是js代码“new Function(...)”。

我在网上看到了其他建议,基本上是:

  • 使用引擎预编译模板,例如Grunt-inline-template-compile这对于你的模板字符串是内联的很有用,我的所有模板都在标签的实际html中,所以如果没有激烈的内容移动,这是不可能的周围。
  • 切换到另一个模板引擎,这个选项对前一个更具吸引力,但我担心它会破坏下划线的许多模板句法并且本身就是一个巨大的工作。

人们都知道还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

尝试将Content-Security-Policy标题设置为unsafe-eval,以便将域中的脚本作为临时解决方法。 http://content-security-policy.com/ 然后尽快移动到Handlebars等模板引擎。您可以将模板放在单独的html文件中,并将它们编译为javascript作为构建的一部分。这使您在开发时可以很好地分离html和js,但在浏览器中为生产版本中的用户提供了良好的性能