【问题标题】:How to set script-src in a Chrome packaged app?如何在 Chrome 打包应用程序中设置 script-src?
【发布时间】:2013-05-18 14:49:24
【问题描述】:

我正在尝试从一个复杂的网络应用程序创建一个 Chrome 打包应用程序。我目前收到错误:

拒绝执行内联事件处理程序,因为它违反了 以下内容安全策略指令:“default-src 'self' chrome-extension-resource:"。请注意,'script-src' 不是明确的 设置,所以 'default-src' 被用作后备。

如何在 manifest.json 中明确设置策略?我试过这样的事情:

"content_security_policy": "default-src 'inline'; script-src 'inline'"

但我仍然收到相同的错误消息。是我的语法错误,还是这个错误是红鲱鱼?

【问题讨论】:

    标签: google-chrome-app


    【解决方案1】:

    您不能放松打包应用中的默认 CSP。如果您正在执行<button id="foo" onclick="doSomething()"> 之类的操作,那么您应该在 HTML 中包含一个单独的 JS 文件,在您的 onload 处理程序中执行 document.querySelector("#foo").onclick = doSomething;。这将符合 CSP 并使您的应用更能抵抗 XSS 攻击。

    【讨论】:

    • 我害怕那个。我希望他们只是这么说,而不是暗示我可以明确设置不同的选项。
    • 公平点。我认为发生的情况是 default CSP 触发了警告,因此我们(Chromium 开发人员)需要在源代码中更新它。从您的角度来看,作为开发人员,警告是您不能抓挠的痒。我去看看。
    • 谢谢。即使我尝试明确设置安全策略,我似乎也收到了消息。
    • @sowbug,这是唯一的方法吗?不应该有一些设置可以用来启用内联脚本吗?
    • 没有。它是 Chrome 应用程序安全模型设计的早期组件。如果您要导入的第三方脚本不是在考虑内联脚本的安全风险的情况下构建的,这会带来不便。但权衡是获得 Chrome 应用程序的高级功能,这些功能在开放网络上尚不可用。
    【解决方案2】:

    我遇到了同样的问题,我在阅读this document 时发现以下内容:

    "sandbox": {
        "pages": ["sandboxed.html"]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多