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 wijst een reeks extensiebronnen toe aan een reeks URL's en/of extensie-ID's die toegang hebben 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/*" ],
      "use_dynamic_url": true
    }
  ],
  ...
}

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. Met "/images/*" wordt bijvoorbeeld alles in de map images/ van de extensie recursief weergegeven, terwijl met "*.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.
"use_dynamic_url"
Indien waar: sta alleen toe dat bronnen toegankelijk zijn via een dynamische ID. Per sessie wordt een dynamische ID gegenereerd. Dat betekent dat het opnieuw wordt gegenereerd wanneer de browser opnieuw wordt opgestart of de extensie opnieuw wordt geladen.

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

Bronnen zijn beschikbaar op een webpagina via 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 via 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.
  • Het bovenstaande geldt 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.

,

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 wijst een reeks extensiebronnen toe aan een reeks URL's en/of extensie-ID's die toegang hebben 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/*" ],
      "use_dynamic_url": true
    }
  ],
  ...
}

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. Met "/images/*" wordt bijvoorbeeld alles in de map images/ van de extensie recursief weergegeven, terwijl met "*.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.
"use_dynamic_url"
Indien waar: sta alleen toe dat bronnen toegankelijk zijn via een dynamische ID. Per sessie wordt een dynamische ID gegenereerd. Dat betekent dat het opnieuw wordt gegenereerd wanneer de browser opnieuw wordt opgestart of de extensie opnieuw wordt geladen.

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

Bronnen zijn beschikbaar op een webpagina via 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 via 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.
  • Het bovenstaande geldt 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.