content_security_policy

Type String
Obligatoire Non
Exemple
json

"content_security_policy": "default-src 'self'"

Les extensions ont une politique de sécurité de contenu qui leur est appliquée par défaut. La stratégie par défaut restreint les sources à partir desquelles elles peuvent charger les ressources <script> et <object>, et interdit les pratiques potentiellement dangereuses telles que l'utilisation d'eval(). Voir la politique de sécurité de contenu par défaut pour en savoir plus sur ces implications.

Vous pouvez utiliser la clé "content_security_policy" pour desserrer ou resserrer la politique par défaut. Cette clé est spécifiée de la même manière que l'en-tête HTTP Content-Security-Policy. Voir l'utilisation de la politique de sécurité de contenu pour une description générale de la syntaxe de CSP.

Par exemple, vous pouvez utiliser cette clé pour :

  • permettre à l'extension de charger des scripts et des objets hors de son paquet, en fournissant leurs URL dans les directives script-src or object-src ;
  • permettre à l'extension d'exécuter des scripts en ligne, en fournissant le hash du script dans la directive "script-src" ;
  • permettre à l'extension d'utiliser eval() et des fonctionnalités similaires, en incluant 'unsafe-eval' dans la directive script-src ;
  • limiter les sources autorisées pour d'autres types de contenu, tels que les images et les feuilles de style, en utilisant la directive de politique appropriée.

Il existe des restrictions sur la politique que vous pouvez spécifier ici :

  • La politique doit inclure au moins les directives script-src et les object-src, et la directive script-src doit contenir le mot-clé 'self'.
  • Les sources distantes doivent utiliser le schéma https:.
  • Les sources distantes ne doivent pas utiliser de caractères génériques pour les domaines dans la liste des suffixes publics (ainsi, « *.co.uk » et « *.blogspot.com » ne sont pas autorisés, même si « *.foo.blogspot.com » est autorisé).
  • Toutes les sources doivent spécifier un hôte.
  • Les seuls schémas autorisés pour les sources sont : blob:, filesystem:, moz-extension:, et https:.
  • Les seuls mots-clés autorisés sont : 'none', 'self', et 'unsafe-eval'.

Exemple

Examples valides

Autoriser les scripts distants de https://example.com : (voir note 1

json
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

Autoriser les scripts distants depuis n'importe quel sous-domaine de « jquery.com » :

json
"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"

Autoriser eval() et ses amis :

json
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"

Autoriser le script en ligne : "<script>alert('Hello, world.');</script>" :

json
"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"

Conserver le reste de la politique, mais exiger également que les images soient empaquetées avec l'extension :

json
"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"

Exiger que tous les types de contenu soient empaquetés avec l'extension :

json
"content_security_policy": "default-src 'self'"

Exemples non valides

Politique qui omet la directive "object-src" :

json
"content_security_policy": "script-src 'self' https://*.jquery.com;"

Politique qui omet le mot-clé "self" dans la directive "script-src" :

json
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"

Le schéma pour une source distante n'est pas https: :

json
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"

Le caractère générique est utilisé avec un domaine générique :

json
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"

La source spécifie un schéma mais aucun hôte :

json
"content_security_policy": "script-src 'self' https:; object-src 'self'"

La directive inclut le mot-clé non pris en charge 'unsafe-inline' :

json
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"

1. Note : les exemples valides montrent l'utilisation correcte des clés dans CSP. Toutefois, les extensions avec 'unsafe-eval', 'unsafe-inline', des blobs, des scripts ou des sources distantes dans leur CSP ne sont pas autorisées à être répertoriées sur addons.mozilla.org en raison de problèmes de sécurité majeurs.

Compatibilité des navigateurs

BCD tables only load in the browser