Fichier manifeste – Bac à sable

Définit un ensemble de pages d'extension qui doivent être diffusées dans une origine unique de bac à sable. La Content Security Policy utilisée par les pages en bac à sable d'une extension est spécifiée dans la clé "content_security_policy".

Être dans un bac à sable a deux conséquences:

  1. Une page en bac à sable n'a pas accès aux API d'extension ni à un accès direct aux pages hors bac à sable (elle peut communiquer avec elles à l'aide de postMessage()).
  2. Une page en bac à sable n'est pas soumise à la CSP (Content Security Policy) utilisée par le reste de l'extension (elle possède sa propre valeur CSP). Cela signifie que, par exemple, elle peut utiliser un script intégré et eval().

Par exemple, voici comment spécifier que deux pages d'extension doivent être diffusées dans un bac à sable avec une CSP personnalisée:

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

Si aucune valeur n'est spécifiée, la valeur par défaut de "content_security_policy" est sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';.

Vous pouvez spécifier votre valeur CSP pour restreindre davantage le bac à sable, mais elle DOIT inclure l'instruction "sandbox" et NE DOIT PAS comporter le jeton allow-same-origin (voir la spécification HTML5 pour connaître les éventuels jetons de bac à sable).

Notez que vous devez uniquement répertorier les pages qui devraient être chargées dans des fenêtres ou des cadres. Les ressources utilisées par les pages en bac à sable (par exemple, les feuilles de style ou les fichiers sources JavaScript) n'ont pas besoin d'apparaître dans la liste pages, car elles utiliseront le bac à sable du cadre qui les intègre.

La section Utiliser eval() dans les extensions Chrome explique plus en détail comment mettre en œuvre un workflow de bac à sable qui permet d'utiliser des bibliothèques qui, autrement, rencontreraient des problèmes d'exécution avec la politique de sécurité du contenu par défaut de l'extension.