Fichier manifeste – Ressources accessibles sur le Web

Les ressources accessibles sur le Web sont des fichiers situés dans une extension qui peut être consultée par des pages Web ou d'autres . Les extensions utilisent généralement cette fonctionnalité pour afficher des images ou d'autres assets dans des pages Web, mais tout élément inclus dans le bundle d'une extension peut être rendu accessible sur le Web.

Par défaut, aucune ressource n'est accessible sur le Web, ce qui permet à un site Web malveillant d'imprimer les extensions installées par un utilisateur ou d'exploiter des failles (par exemple, des bogues XSS) dans les extensions installées. Uniquement les pages ou les scripts chargés depuis l'origine d'une extension peuvent accéder aux ressources de cette extension.

Déclaration du fichier manifeste

Utilisez la propriété du fichier manifeste web_accessible_resources pour déclarer les ressources exposées et les quelles origines. Cette propriété est un tableau d'objets qui déclare les règles d'accès aux ressources. Chaque objet répertorie un certain nombre de ressources d'extension et doit fournir une valeur pour au moins l'un des éléments matches ou extension_ids pour indiquer les origines qui peuvent accéder à ces ressources.

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

Chaque objet du tableau contient les éléments suivants:

"resources"
Tableau de chaînes, chacune contenant un chemin d'accès relatif à une ressource donnée à partir du répertoire racine de l'extension. Les ressources peuvent contenir des astérisques (*) pour les correspondances avec des caractères génériques. Par exemple, "/images/*" expose tous les éléments du répertoire images/ de l'extension de manière récursive, tandis que "*.png" expose tous les fichiers PNG.
"matches"
Tableau de chaînes, chacune contenant un modèle de correspondance indiquant les sites autorisés à accéder à cet ensemble de ressources. Seule l'origine est utilisée pour établir une correspondance avec les URL. Les origines incluent la mise en correspondance des sous-domaines. Google Chrome émet un "Format de correspondance non valide" s'affiche si le chemin d'accès du format n'est pas '/*'.
"extension_ids"
Tableau de chaînes, chacune contenant l'ID d'une extension pouvant accéder aux ressources.

Chaque élément doit inclure un élément "resources", ainsi qu'un élément "matches" ou "extension_ids". Le mappage établit un mappage qui expose les ressources spécifiées soit à des pages Web correspondant au format, soit à des extensions ayant des ID correspondants.

Les ressources sont disponibles dans une page Web à l'aide de l'URL chrome-extension://[PACKAGE ID]/[PATH], qui peut être généré avec la classe runtime.getURL() . Les ressources sont diffusées avec les en-têtes CORS appropriés afin d'être disponibles avec fetch().

La navigation depuis une origine Web vers une ressource d'extension est bloquée, sauf si la ressource est répertoriés comme accessibles sur le Web. Notez les cas particuliers suivants:

  • Lorsqu'une extension utilise l'API webRequest pour rediriger un utilisateur demande de ressource vers une ressource qui n'est pas accessible sur le Web, ce type de requête est également bloqué.
  • Les redirections à partir de ressources publiques sont bloquées, même si la ressource qui n'est pas accessible sur le Web appartient à la .
  • En mode navigation privée, la navigation est bloquée, sauf si la valeur du champ "incognito" est définie sur "split".

Les scripts de contenu eux-mêmes n'ont pas besoin d'être autorisés.

Exemple

L'exemple de ressources accessibles sur le Web illustre l'utilisation de cet élément dans une extension fonctionnelle.