Manifest - Sandbox

Definisce una raccolta di pagine di estensioni che devono essere pubblicate in un'origine univoca con sandbox. Il criterio di sicurezza del contenuto utilizzato dalle pagine con sandbox di un'estensione viene specificato nella chiave "content_security_policy".

La presenza in una sandbox ha due implicazioni:

  1. Una pagina con sandbox non avrà accesso alle API delle estensioni e non avrà accesso diretto alle pagine senza sandbox (potrebbe comunicare con le API tramite postMessage()).
  2. Una pagina con sandbox non è soggetta al criterio di sicurezza del contenuto (CSP) utilizzato dal resto dell'estensione (ha un proprio valore CSP separato). Ciò significa che, ad esempio, può utilizzare lo script incorporato e eval().

Ad esempio, ecco come specificare che due pagine di estensioni devono essere pubblicate in una sandbox con un CSP personalizzato:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

Se non specificato, il valore predefinito di "content_security_policy" è sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Puoi specificare il valore CSP per limitare ulteriormente la sandbox, ma DEVE includere l'istruzione "sandbox" e NON DEVE avere il token allow-same-origin (consulta la specifica HTML5 per i possibili token sandbox).

Tieni presente che devi solo elencare le pagine che prevedi verranno caricate in finestre o frame. Le risorse utilizzate dalle pagine con sandbox (ad es. i fogli di stile o i file sorgente JavaScript) non devono essere visualizzate nell'elenco pages perché utilizzeranno la sandbox del frame in cui le incorpora.

"Utilizzo di eval() nelle estensioni di Chrome" descrive più nel dettaglio l'implementazione di un flusso di lavoro di sandboxing che consente l'utilizzo di librerie che altrimenti avrebbero problemi di esecuzione in base al criterio di sicurezza del contenuto predefinito dell'estensione.