Chrome应用中的内容安全政策

时间:2014-01-15 06:21:16

标签: javascript google-chrome manifest google-chrome-app content-security-policy

我的Chrome应用有以下清单:

{
    "name": ",
    "version": "1.0.3",
    "manifest_version": 2,
    "description": "Chrome Extension for.",
    "icons": {
        "16": "images/test.png",
        "19": "images/test.png",
        "256": "images/test.png"
    },
    "app": {
        "background": {
            "scripts": [
                "background.js"
            ]
        }
    },

    "sandbox": {
        "js": [
            "lib/test-api.js"
        ]
    },
    "permissions": [
        "<all_urls>",
        "notifications",
        "storage",
        "videoCapture"
    ]
}

我有一个运行eval的脚本文件。我已阅读有关CSP和沙盒的内容,但我仍然收到此错误:

  

拒绝将字符串评估为JavaScript,因为'unsafe-eval'是   以下内容安全性中不允许使用脚本源   政策指令:“default-src'self'chrome-extension-resource:”。   请注意,'script-src'未显式设置,因此'default-src'是   用作后备。

2 个答案:

答案 0 :(得分:40)

您是否尝试根据CSP链接将CSP行添加到您的清单?

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

答案 1 :(得分:34)

您所展示的内容一个Chrome extension,但Chrome app Chrome扩展程序可让您放宽默认的内容安全政策; Chrome应用不会。(来源:CSP docs for Chrome apps;注意:此页面与CSP docs for Chrome extensions不同。)

下一行适用于应用和扩展程序:

  • 内容安全策略不适用于特定脚本,而是适用于整个页面。因此,您只能为整个页面声明一个沙箱(使用sandbox.pages key in the manifest file)。您无法使用“js”作为沙盒中的密钥。

在Chrome扩展程序中,可以放宽CSP,例如:允许eval使用以下政策:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

要在扩展程序中启用您的应用:请勿使用apps键,而是使用background键。使用以下清单,您可以在后台页面中使用eval

{
    "name": "Whatever",
    "version": "1.0.3",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}

(省略icons / permissions,因为它们与示例无关;省略sandbox,因为它不需要)