web-dev-qa-db-fra.com

Politique de sécurité du contenu dans Chrome App

Mon Chrome a le manifeste suivant:

{
    "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 script qui exécute eval. J'ai lu CSP et le sandboxing, mais je reçois toujours cette erreur:

Refus d'évaluer une chaîne comme JavaScript car 'unsafe-eval' n'est pas une source de script autorisée dans la directive de politique de sécurité du contenu suivante: "default-src 'self' chrome-extension-resource:". Notez que 'script-src' n'a pas été explicitement défini, donc 'default-src' est utilisé comme solution de secours.

32
user1968030

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

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

Ce que vous montrez n'est pas un extension Chrome , mais un application Chrome .
Les extensions Chrome vous permettront d'assouplir la politique de sécurité du contenu par défaut; Chrome Les applications ne le seront pas. (source: Documents CSP pour Chrome apps ; note) : cette page est différente de documents CSP pour Chrome ).

La ligne suivante s'applique aux applications et extensions:

  • 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 sandbox que pour une page entière (en utilisant sandbox.pages clé dans le fichier manifeste ). Vous ne pouvez pas utiliser "js" comme clé dans le bac à sable.

Dans une extension Chrome, le CSP peut être assoupli, par exemple en autorisant eval en utilisant la politique suivante:

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

Pour transformer votre application en extension : n'utilisez pas la touche apps, mais utilisez une clé background. Avec le manifeste suivant, vous pourrez utiliser eval dans votre page d'arrière-plan:

{
    "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 car ils ne sont pas pertinents pour l'exemple; omis sandbox parce que ce n'est pas nécessaire)

35
Rob W