Come rilassare la politica sulla sicurezza dei contenuti in Chrome?


18

Ultimamente, alcuni siti Web come Facebook utilizzano la politica di sicurezza dei contenuti (CSP) per limitare il caricamento di script da "fonti non attendibili". Ad esempio, quando si richiede contenuto HTML di Facebook (ad es. Https://www.facebook.com ), la risposta HTTP di Facebook include la seguente intestazione di risposta:

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;

Ciò ha impatto su alcuni bookmarklet che richiedono il caricamento e l'esecuzione di librerie Javascript da fonti non attendibili.

Ad esempio, ogni volta che provo a eseguire il bookmarklet Show Anchors su una pagina Facebook, l'esecuzione di questo bookmarklet non riesce mentre tenta di caricare jQuery da una fonte non attendibile. Nella console per gli sviluppatori di Chrome, verrà indicato:

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".

Ho trovato una pagina di documentazione di Chrome su questo argomento, ma si applica solo alle estensioni di Chrome .

Sto cercando soluzioni che mi permettano di farlo

  • o per una sola volta disattivare CSP
  • o autorizzare permanentemente le mie fonti attendibili.


@Rudie Funzionerà con Chrome Mobile?
Michael,

@Michael Se Chrome Mobile supporta le estensioni moderne. WeRequest è un po 'nuovo. Non utilizzo Chrome Mobile, quindi non ne ho idea.
Rudie,

Risposte:


2

Metodi approvati dalle app di Chrome

Usa le librerie di template

Usa una libreria che offre modelli precompilati e sei pronto. Puoi comunque utilizzare una libreria che non offre la precompilazione, ma richiederà un po 'di lavoro da parte tua e ci sono restrizioni.

Dovrai utilizzare il sandboxing per isolare qualsiasi contenuto a cui vuoi fare "eval". Il sandboxing solleva CSP dal contenuto specificato.

Contenuto locale sandbox

Il sandboxing consente di pubblicare determinate pagine in un'origine sandboxed unica. Queste pagine sono quindi esenti dalla loro politica di sicurezza dei contenuti. Le pagine in modalità sandbox possono utilizzare iframe, script inline ed eval () (e gli ultimi due sono quelli che possono essere prevenuti). Ciò risolverà "unsafe-inline" e "unsafe-eval".

  • Usa gli script incorporati nella sandbox
  • Includi sandbox in manifest

Accedi a risorse remote

È possibile recuperare risorse remote tramite XMLHttpRequest e servirle tramite BLOB :, dati: o filesystem: URL. Ciò dovrebbe risolvere il problema relativo al recupero di jQuery.

Requisito manifest

Per poter eseguire l'origine incrociata XMLHttpRequests, devi aggiungere un'autorizzazione per l'host dell'URL remoto.

Cross-origine XMLHttpRequest

Scarica l'URL remoto nell'app e pubblica il suo contenuto come blob:URL.


Non penso che tu possa fare nessuno di questi. Per correggere le intestazioni di risposta unsafe-evale unsafe-inline, solo il proprietario dello script può correggere il codice o, se è di dominio pubblico, è possibile correggerlo. Tutto ciò è probabilmente una soluzione una tantum.


Trucchi

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

Iniezione di script di contenuto

http://wiki.greasespot.net/Content_Script_Injection


Gli hack tuttavia hanno degli svantaggi perché hanno saputo causare almeno un buco nella sicurezza almeno il primo.


0

Puoi modificare queste impostazioni nella scheda Contenuto, a cui puoi accedere direttamente digitando chrome://settings/contentnella barra degli indirizzi. Puoi autorizzare domini specifici su tipi di contenuto specifici.


9
Dove si trova esattamente nelle impostazioni del contenuto e come? Ho provato ad aggiungere il mio sito alle "eccezioni dei cookie e dei dati del sito" senza alcun risultato. Nessuna delle altre impostazioni sembra rilevante.
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.