【问题标题】:chrome packaged app doesn't allows unsafe-eval in knockout.jschrome 打包的应用程序不允许在 knockout.js 中使用 unsafe-eval
【发布时间】:2014-02-11 06:56:00
【问题描述】:

我开发了一个网络应用程序并将其作为解压扩展程序上传到我的 Google chrome 应用程序中。在执行期间,我收到以下错误:

拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 是 在以下内容安全中不是允许的脚本来源 策略指令:“default-src 'self' chrome-extension-resource:”。 请注意,'script-src' 没有明确设置,所以 'default-src' 是 用作后备。 [knockout-3.0.0-min.js:54]

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" 添加到 manifest.json 会产生一条消息:

'content_security_policy' 仅允许用于扩展和旧版 打包的应用,但这是一个打包的应用。

这是否意味着我不能使用knockous.js 为chrome 应用商店开发应用程序?

如何解决这个问题?

【问题讨论】:

标签: javascript google-chrome knockout.js eval content-security-policy


【解决方案1】:

使用敲除安全绑定解决问题。

Knockout.js secure binding

【讨论】:

    【解决方案2】:

    knockout 不使用 eval,但它使用 new Function() 表达式在模板中进行性能优化。

    要解决此问题,您必须对使用此类字符串到代码转换的组件进行沙箱处理。

    以下是 chrome 应用文档中有关 eval 沙盒的部分:

    但是,我们认识到,各种库都使用 eval() 和 类似 eval 的构造,例如用于性能的 new Function() 优化和易于表达。模板库是 特别容易采用这种实现方式。虽然有些(如 Angular.js) 支持 CSP 开箱即用,许多流行的框架 尚未更新为与扩展兼容的机制 没有评估的世界。因此,删除对该功能的支持 事实证明,问题比开发人员预期的要多。

    Article link

    当然,您可以像往常一样相信 RP Niemeyer 的建议。

    【讨论】:

      猜你喜欢
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      相关资源
      最近更新 更多