Criteri di sicurezza del contenuto

Se non hai dimestichezza con Criteri di sicurezza del contenuto (CSP), consulta Introduzione alla sicurezza del contenuto Policy è un buon punto di partenza. Il documento tratta la visione più ampia della piattaforma web di CSP; Il CSP delle app di Chrome non è così flessibile.

CSP è una politica per limitare i problemi di cross-site scripting (XSS) e sappiamo tutti che i problemi l'esecuzione dello scripting è scadente. Non proveremo a convincerti che CSP è una nuova norma utile e confusa. C'è del lavoro da fare: dovrai imparare a svolgere le attività di base in modo diverso.

Lo scopo di questo documento è spiegarti esattamente quali criteri CSP sono per le app di Chrome, per rispettarlo e come potete continuare a svolgere quelle attività fondamentali in un modo conforme a CSP.

Cos'è il CSP per le app di Chrome?

Il criterio di sicurezza del contenuto per le app di Chrome ti impedisce di:

  • Non puoi utilizzare lo scripting incorporato nelle pagine dell'app di Chrome. La limitazione esclude entrambi i blocchi <script> e gestori di eventi (<button onclick="...">).
  • Non puoi fare riferimento a risorse esterne in nessun file dell'app (ad eccezione dei file video e audio) risorse). Non puoi incorporare risorse esterne in un iframe.
  • Non puoi utilizzare metodi da stringa a JavaScript come eval() e new Function().

Viene implementato mediante il seguente valore del criterio:

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:;

L'app di Chrome può fare riferimento solo a script e oggetti al suo interno, ad eccezione dei contenuti multimediali (le app possono fare riferimento a video e audio esterni al pacchetto). Le estensioni di Chrome consentono di rilassarsi il criterio di sicurezza del contenuto predefinito; No.

Come rispettare CSP

Tutto JavaScript e tutte le risorse devono essere locali (tutto viene pacchettizzato nell'app Chrome).

"Ma allora come faccio a..."

È molto possibile che tu stia utilizzando librerie di modelli e molte di queste non funzionano con CSP. Potresti anche voler accedere a risorse esterne nell'app (immagini esterne, contenuti di siti web).

Utilizza le librerie di modelli

Se hai bisogno di una libreria che offre modelli precompilati, è tutto pronto. Puoi comunque usare una libreria non offre la precompilazione, ma richiede un po' di lavoro da parte tua. Sono previste limitazioni.

Dovrai usare la sandbox per isolare i contenuti che vuoi "valutare" le cose da fare. Il sandboxing aumenta il CSP nei contenuti specificati. Se vuoi usare il potente strumento Chrome API nell'app Chrome, i contenuti con sandbox non possono interagire direttamente con queste API (vedi Contenuti locali della sandbox).

Accedi alle risorse remote

Puoi recuperare risorse remote tramite XMLHttpRequest e pubblicarle tramite blob:, data: o filesystem: URL (vedi Informazioni sulle risorse esterne).

Il video e l'audio possono essere caricati da servizi remoti perché hanno un buon comportamento di riserva quando offline o con connettività instabile.

Incorpora contenuti web

Anziché utilizzare un iframe, puoi richiamare un URL esterno utilizzando un tag WebView (consulta la sezione Incorpora pagine web esterne).