Si no conoces la Política de Seguridad del Contenido (CSP), consulta Introducción a la seguridad del contenido. La política es un buen punto de partida. Ese documento abarca la vista más amplia de la plataforma web de CSP; La CSP de la app de Chrome no es tan flexible.
La CSP es una política para mitigar los problemas de secuencias de comandos entre sitios la escritura de secuencias de comandos es malo. No intentaremos convencerte de que la CSP es una nueva política polémica y confusa. Hay trabajo involucrado; deberás aprender cómo realizar tareas fundamentales de manera diferente.
El objetivo de este documento es decirte exactamente cuál es la política de CSP para las Apps de Chrome, lo que qué debes hacer para cumplir con ella, y cómo puedes seguir haciendo esas tareas fundamentales de forma y son compatibles con CSP.
¿Qué es el CSP para las Apps de Chrome?
La política de seguridad del contenido de las Apps de Chrome te impide hacer lo siguiente:
- No puedes usar secuencias de comandos intercaladas en las páginas de la app de Chrome. La restricción prohíbe ambos bloqueos
<script>
y controladores de eventos (<button onclick="...">
). - No puedes hacer referencia a recursos externos en ninguno de los archivos de la app (excepto para audio y video) recursos). No puedes incorporar recursos externos en un iframe.
- No puedes usar métodos de string a JavaScript, como
eval()
ynew Function()
.
Esto se implementa a través del siguiente valor de la política:
default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;
Tu app de Chrome solo puede hacer referencia a secuencias de comandos y objetos dentro de ella, a excepción de contenido multimedia (las apps pueden hacer referencia a video y audio fuera del paquete). Con las extensiones de Chrome, podrás relajarte la Política de Seguridad del Contenido predeterminada; Las Apps de Chrome no.
Cómo cumplir con los CSP
Todos los recursos y JavaScript deben ser locales (todo se empaqueta en tu aplicación de Chrome).
"Pero ¿cómo puedo..."
Es muy posible que uses bibliotecas de plantillas, y muchas de ellas no funcionarán con CSP. Es posible que también quieras acceder a recursos externos en tu app (imágenes externas o contenido de sitios web).
Cómo usar bibliotecas de plantillas
Usa una biblioteca que ofrezca plantillas precompiladas y listo. Aún puedes usar una biblioteca no ofrece compilación previa, pero requerirá algo de trabajo de tu parte y hay restricciones.
Deberás utilizar una zona de pruebas para aislar el contenido que quieras realizar "eval". cosas. La zona de pruebas aumenta a la CSP el contenido que especificas. Si quieres usar la potente versión de Chrome las APIs de tu app de Chrome, el contenido de la zona de pruebas no puede interactuar directamente con estas APIs (consulta Contenido local de la zona de pruebas).
Accede a recursos remotos
Puedes recuperar recursos remotos a través de XMLHttpRequest
y entregarlos a través de blob:
, data:
o
Las URLs de filesystem:
(consulta Cómo hacer referencia a recursos externos).
El video y el audio se pueden cargar desde servicios remotos porque tienen un buen comportamiento de resguardo cuando sin conexión o con una conectividad irregular.
Cómo incorporar contenido web
En lugar de usar un iframe, puedes llamar a una URL externa usando una etiqueta de WebView (consulta Incorporar páginas web externas).