Politique de sécurité du contenu dans L'application Chrome

Mon Chrome app a le manifeste suivantes:

{
    "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"
    ]
}

j'ai un fichier de script qui s'exécute eval. J'ai lu sur CSP et le bac à sable, mais j'ai toujours cette erreur:

a refusé d'évaluer une chaîne comme JavaScript parce que 'unsafe-eval' est pas une source autorisée de script dans la sécurité de contenu suivante Directive en matière de politique: "par défaut-src 'auto' chrome-extension-ressource:". Notez que 'script-src' n'était pas explicitement défini, donc 'par défaut-src' est utilisé comme une solution de repli.

25
demandé sur Xan 2014-01-15 10:21:15
la source

2 ответов

avez-vous essayé d'ajouter la ligne CSP à votre manifeste selon votre CSP lien?

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
35
répondu brucek 2014-01-15 11:03:50
la source

ce que vous montrez est Chrome extension, mais Chrome app.

les extensions GoogleChrome vous permettront D'assouplir la Politique de sécurité du contenu par défaut; les applications GoogleChrome ne le feront pas. (source: CSP docs for Chrome apps; note: cette page est différente de CSP docs pour les extensions de Chrome).

la ligne suivante s'applique aux applications et extensions:

  • le La Politique de sécurité du contenu ne s'applique pas à un script spécifique, mais à une page entière. Ainsi, vous ne pouvez déclarer un bac à sable que pour une page entière (en utilisant le sandbox.pages clé dans le fichier manifest). Vous ne peut pas utilisez " js " comme clé dans le bac à sable.

dans une extension Chrome, le CSP peut être détendu, par exemple en permettant eval à l'aide de la politique suivante:

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

pour tourner votre application dans une extension: N'utilisez pas le apps touche, mais utiliser background clé. Avec le manifeste suivant, vous pourrez utiliser eval dans votre arrière-plan de la page:

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

(omis icons/permissions parce qu'ils ne sont pas pertinents pour l'exemple; omis sandbox parce qu'il n'est pas nécessaire)

33
répondu Rob W 2014-01-15 13:10:32
la source