Política de Seguridad de Contenido en la aplicación Chrome


Mi aplicación Chrome tiene el siguiente manifiesto:

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

Tengo un archivo de script que se ejecuta eval. He leído sobre CSP y sandboxing, pero todavía recibo este error:

Se negó a evaluar una cadena como JavaScript porque 'unsafe-eval' es no es una fuente de script permitida en la siguiente Seguridad de contenido Policy directive:"default-src 'self' chrome-extension-resource: "(en inglés). Tenga en cuenta que 'script-src' no se estableció explícitamente, por lo que 'default-src' es utilizado como repliegue.

Author: Xan, 2014-01-15

2 answers

¿Ha intentado agregar la línea CSP a su manifiesto según su enlace CSP?

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
 35
Author: brucek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-15 07:03:50

Lo que estás mostrando es no una extensión de Chrome, sino una aplicación de Chrome.
Las extensiones de Chrome te permitirán relajar la Política de seguridad de contenido predeterminada; las aplicaciones de Chrome no. (fuente: CSP docs for Chrome apps; nota: esta página es diferente de CSP docs for Chrome extensions).

La siguiente línea se aplica a aplicaciones y extensiones:

  • La política de seguridad de contenido no se aplica a un script específico, sino a toda la página. Por lo tanto, solo puede declarar un sandbox para una página completa (utilizando el sandbox.pages clave en el archivo de manifiesto ). No puede usar "js" como clave en sandbox.

En una extensión de Chrome, el CSP se puede relajar, por ejemplo, permitiendo eval utilizando la siguiente política:

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

Para convertir tu app en una extensión: No uses la tecla apps, sino una tecla background. Con el siguiente manifiesto, podrás usar eval en segundo plano página:

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

(omitido icons / permissions porque no son relevantes para el ejemplo; omitidos sandbox porque no es necesario)

 33
Author: Rob W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-15 09:10:32