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()
enew 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).