Ú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.
fuente
Respuestas:
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'.
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-eval
y launsafe-inline
respuesta, 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.
fuente
Puede editar esta configuración en la pestaña de contenido, a la que puede acceder directamente escribiendo
chrome://settings/content
en la barra de direcciones. Puede incluir en la lista blanca dominios específicos en tipos de contenido específicos.fuente