Manifest - Risorse accessibili dal web

Le risorse accessibili dal web sono file all'interno di un'estensione a cui è possibile accedere da pagine web o da altri estensioni. In genere le estensioni usano questa funzionalità per esporre immagini o altri asset che devono essere vengono caricati nelle pagine web, ma qualsiasi asset incluso nel bundle di un'estensione può essere reso accessibile al web.

Per impostazione predefinita nessuna risorsa è accessibile dal web, poiché ciò consente a un sito web dannoso di applicare le impronte delle estensioni installate da un utente oppure sfruttare le vulnerabilità (ad esempio i bug XSS) nelle estensioni installate. Solo pagine o script caricati dall'origine di un'estensione possono accedere alle risorse dell'estensione.

Dichiarazione del file manifest

Utilizza la proprietà manifest web_accessible_resources per dichiarare quali risorse sono esposte e per le origini. Questa proprietà è un array di oggetti che dichiara le regole di accesso alle risorse. Ogni oggetto elenca una serie di risorse delle estensioni e deve fornire un valore per almeno uno dei valori matches o extension_ids per indicare le origini che possono accedere a queste risorse.

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

Ogni oggetto nell'array contiene i seguenti elementi:

"resources"
Un array di stringhe, ciascuna contenente un percorso relativo a una determinata risorsa dalla directory principale dell'estensione. Le risorse possono contenere asterischi (*) per le corrispondenze con caratteri jolly. Ad esempio, "/images/*" espone tutto ciò che si trova nella directory images/ dell'estensione in modo ricorsivo, mentre "*.png" espone tutti i file PNG.
"matches"
Un array di stringhe, ciascuna contenente un pattern di corrispondenza che specifica i siti che possono accedere a questo insieme di risorse. Per le corrispondenze degli URL viene utilizzata solo l'origine. Le origini includono la corrispondenza dei sottodomini. Google Chrome emette il messaggio "Pattern di corrispondenza non valido" se il pattern ha un percorso diverso da "/*".
"extension_ids"
Un array di stringhe, ciascuna contenente l'ID di un'estensione che può accedere alle risorse.

Ogni elemento deve includere un elemento "resources" e un elemento "matches" o "extension_ids". In questo modo si stabilisce una mappatura che espone le risorse specificate alle pagine web corrispondenti al pattern o alle estensioni con ID corrispondenti.

Le risorse sono disponibili in una pagina web utilizzando l'URL chrome-extension://[PACKAGE ID]/[PATH], che può essere generato con runtime.getURL() . Le risorse vengono pubblicate con intestazioni CORS appropriate, in modo che siano disponibili utilizzando fetch().

La navigazione da un'origine web a una risorsa di estensione è bloccata a meno che la risorsa elencate come "accessibili al web". Nota questi casi angolo:

  • Quando un'estensione utilizza l'API webRequest per reindirizzare un utente a una risorsa non accessibile dal web, viene bloccata anche una richiesta di questo tipo.
  • I reindirizzamenti dalle risorse pubbliche vengono bloccati anche se la risorsa che non è accessibile dal web è di proprietà del reindirizzamento .
  • In modalità di navigazione in incognito, la navigazione è bloccata a meno che il valore del campo "incognito" non sia impostato su "split".

Non è necessario che gli script di contenuti in sé siano consentiti.

Esempio

L'esempio di risorse accessibili dal web mostra l'utilizzo di questo elemento in un'estensione funzionante.