Manifest - Webtoegankelijke bronnen

Via internet toegankelijke bronnen zijn bestanden binnen een extensie die toegankelijk zijn via webpagina's of andere extensies. Extensies gebruiken deze functie doorgaans om afbeeldingen of andere elementen weer te geven die op webpagina's moeten worden geladen, maar alle elementen die in de bundel van een extensie zijn opgenomen, kunnen via internet toegankelijk worden gemaakt.

Standaard zijn geen bronnen via internet toegankelijk, omdat een kwaadwillende website hierdoor vingerafdrukken kan maken van extensies die een gebruiker heeft geïnstalleerd of kwetsbaarheden (bijvoorbeeld XSS-bugs ) in geïnstalleerde extensies kan misbruiken. Alleen pagina's of scripts die zijn geladen vanaf de oorsprong van een extensie hebben toegang tot de bronnen van die extensie.

Duidelijke verklaring

Gebruik de manifesteigenschap web_accessible_resources om aan te geven welke bronnen zijn blootgesteld en van welke oorsprong. Deze eigenschap is een array van objecten die regels voor toegang tot bronnen declareert. Elk object vermeldt een aantal extensiebronnen en moet een waarde opgeven voor ten minste één van de matches of extension_ids sleutels om de oorsprong aan te geven die toegang heeft tot deze bronnen.

{
  ...
  "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/*" ]
    }
  ],
  ...
}

Elk object in de array bevat deze elementen:

"resources"
Een array van tekenreeksen, die elk een relatief pad bevatten naar een bepaalde bron vanuit de hoofdmap van de extensie. Bronnen kunnen sterretjes ( * ) bevatten voor jokertekens. "/images/*" wordt bijvoorbeeld alles in de map images/ van de extensie recursief weergegeven, terwijl "*.png" alle PNG-bestanden worden weergegeven.
"matches"
Een array van tekenreeksen, die elk een overeenkomstpatroon bevatten dat specificeert welke sites toegang hebben tot deze set bronnen. Alleen de oorsprong wordt gebruikt om URL's te matchen. Origins omvatten subdomeinmatching. Google Chrome geeft de foutmelding 'Ongeldig overeenkomstpatroon' weer als het patroon een ander pad heeft dan '/*'.
"extension_ids"
Een array van tekenreeksen, die elk de ID bevatten van een extensie die toegang heeft tot de bronnen.

Elk element moet een element "resources" en een element "matches" of "extension_ids" bevatten. Hierdoor wordt een mapping tot stand gebracht die de gespecificeerde bronnen blootlegt aan webpagina's die overeenkomen met het patroon of aan extensies met overeenkomende ID's.

Bronnen zijn beschikbaar op een webpagina met behulp van de URL chrome-extension://[PACKAGE ID]/[PATH] , die kan worden gegenereerd met de runtime.getURL() -methode. De bronnen worden geleverd met de juiste CORS- headers, zodat ze beschikbaar zijn met behulp van fetch() .

Een navigatie van een weboorsprong naar een extensiebron wordt geblokkeerd, tenzij de bron als webtoegankelijk wordt vermeld. Let op deze hoekgevallen:

  • Wanneer een extensie de webRequest API gebruikt om een ​​verzoek om een ​​openbare bron om te leiden naar een bron die niet via internet toegankelijk is, wordt een dergelijk verzoek ook geblokkeerd.
  • Omleidingen vanaf openbare bronnen worden geblokkeerd, zelfs als de bron die niet via internet toegankelijk is, eigendom is van de omleidingsextensie.
  • Navigatie wordt geblokkeerd in de incognitomodus, tenzij de waarde van het veld "incognito" is ingesteld op "split" .

Inhoudsscripts zelf hoeven niet te worden toegestaan.

Voorbeeld

Het voorbeeld van Web Toegankelijke Bronnen demonstreert het gebruik van dit element in een werkende extensie.