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:
- 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()
). - 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.