¿Cómo relajar la política de seguridad de contenido en Chrome?

18

Últimamente, algunos sitios web como Facebook utilizan la Política de seguridad de contenido (CSP) para restringir la carga de scripts de "fuentes no confiables". Por ejemplo, al solicitar contenido HTML de Facebook (por ejemplo, https://www.facebook.com ), la respuesta HTTP de Facebook incluye el siguiente encabezado de respuesta:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

Esto tiene un impacto en algunos marcadores que requieren cargar y ejecutar bibliotecas Javascript desde fuentes no confiables.

Por ejemplo, cada vez que intento ejecutar el bookmarklet Show Anchors en una página de Facebook, la ejecución de este bookmarklet falla cuando intenta cargar jQuery desde una fuente no confiable. En la consola de desarrollador de Chrome, dirá:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

Encontré una página de documentación de Chrome sobre este tema, pero solo se aplica a las extensiones de Chrome .

Estoy buscando soluciones que me permitan

  • ya sea por una sola vez desactivar CSP
  • o incluir en la lista blanca de forma permanente mis fuentes de confianza.
Abdull
fuente
@Rudie ¿Funcionará eso para Chrome Mobile?
Michael
@Michael If Chrome Mobile admite extensiones modernas. WeRequest es algo nuevo. No uso Chrome Mobile, así que no tengo idea.
Rudie

Respuestas:

2

Métodos respaldados por aplicaciones de Chrome

Usar bibliotecas de plantillas

Use una biblioteca que ofrezca plantillas precompiladas y ya está todo listo. Todavía puede usar una biblioteca que no ofrezca precompilación, pero requerirá algo de trabajo de su parte y existen restricciones.

Tendrá que usar sandboxing para aislar cualquier contenido al que desee hacer cosas de 'evaluación'. Sandboxing levanta CSP en el contenido que especifique.

Contenido local de sandbox

El sandboxing permite que las páginas especificadas se sirvan en un sandboxed, origen único. Estas páginas están exentas de su Política de seguridad de contenido. Las páginas de espacio aislado pueden usar iframes, secuencias de comandos en línea y eval () (y las dos últimas son las que se evitan). Eso solucionará 'inseguro en línea' y 'inseguro-eval'.

  • Usar scripts en línea en sandbox
  • Incluir sandbox en manifiesto

Acceda a recursos remotos

Puede obtener recursos remotos a través de XMLHttpRequest y servirlos a través de blob :, data :, o sistema de archivos: URL. Esto debería solucionar el problema de búsqueda de jQuery.

Requisito manifiesto

Para poder realizar el origen cruzado XMLHttpRequests, deberá agregar un permiso para el host de la URL remota.

Origen cruzado XMLHttpRequest

Obtenga la URL remota en la aplicación y sirva su contenido como una blob:URL.


No creo que puedas hacer nada de esto. Para corregir los encabezados unsafe-evaly la unsafe-inlinerespuesta, solo el propietario del script puede corregir el código o, si está en dominio público, puede corregirlo. Todo esto es probablemente una solución única.


Hacks

Ventana insegura

http://wiki.greasespot.net/UnsafeWindow

Inyección de guiones de contenido

http://wiki.greasespot.net/Content_Script_Injection


Sin embargo, los hacks tienen desventajas porque han sabido causar agujeros de seguridad al menos el primero, definitivamente.

hay un café
fuente
0

Puede editar esta configuración en la pestaña de contenido, a la que puede acceder directamente escribiendo chrome://settings/contenten la barra de direcciones. Puede incluir en la lista blanca dominios específicos en tipos de contenido específicos.

Gman Smith
fuente
99
¿Dónde exactamente en la configuración de contenido hago esto y cómo? Traté de agregar mi sitio a las "excepciones de cookies y datos del sitio" sin ningún efecto. Ninguna de las otras configuraciones parece relevante.
Michael