Manifiesto: Zona de pruebas

Define un conjunto de páginas de extensiones que se publicarán en un origen único de zona de pruebas. En la clave "content_security_policy", se especifica la Política de Seguridad del Contenido que usan las páginas de zona de pruebas de una extensión.

Estar en una zona de pruebas tiene dos implicaciones:

  1. Una página de zona de pruebas no tendrá acceso a las APIs de extensión ni acceso directo a páginas que no están dentro de la zona de pruebas (es posible que se comunique con ellas mediante postMessage()).
  2. Una página de zona de pruebas no está sujeta a la Política de Seguridad del Contenido (CSP) que utiliza el resto de la extensión (tiene su propio valor de CSP). Esto significa que, por ejemplo, puede usar una secuencia de comandos intercalada y eval().

Por ejemplo, a continuación, se muestra cómo especificar que dos páginas de extensión se entregarán en una zona de pruebas con una CSP personalizada:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

Si no se especifica, el valor predeterminado de "content_security_policy" es sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Puedes especificar el valor de tu CSP para restringir aún más la zona de pruebas, pero DEBE incluir la directiva "sandbox" y NO DEBE tener el token allow-same-origin (consulta la especificación HTML5 para conocer los posibles tokens de la zona de pruebas).

Ten en cuenta que solo debes enumerar las páginas que esperas que se carguen en ventanas o marcos. No es necesario que los recursos que utilizan las páginas de zona de pruebas (p.ej., hojas de estilo o archivos de origen de JavaScript) aparezcan en la lista pages, ya que utilizarán la zona de pruebas del marco que los incorpora.

En "Cómo usar eval() en extensiones de Chrome", se explica con más detalle la implementación de un flujo de trabajo de zona de pruebas que habilita el uso de bibliotecas que, de lo contrario, tendrían problemas para ejecutarse conforme a la Política de Seguridad del Contenido predeterminada de la extensión.