Content-Security-Policy : directive default-src
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis août 2016.
La directive HTTP Content-Security-Policy (CSP) default-src sert de valeur par défaut pour les autres directives de récupération CSP. Pour chacune des directives suivantes, l'agent utilisateur consultera la directive default-src et utilisera sa valeur pour la directive demandée si celle-ci est absente :
child-srcconnect-srcfont-srcframe-srcimg-srcmanifest-srcmedia-srcobject-srcprefetch-srcscript-srcscript-src-elemscript-src-attrstyle-srcstyle-src-elemstyle-src-attrworker-src
| Version de CSP | 1 |
|---|---|
| Type de directive | Directive de récupération |
Syntaxe
Content-Security-Policy: default-src 'none';
Content-Security-Policy: default-src <source-expression-list>;
Cette directive peut avoir l'une des valeurs suivantes :
'none'-
Aucune ressource de ce type ne peut être chargée. Les guillemets simples sont obligatoires.
<source-expression-list>-
Une liste d'expressions de source séparées par des espaces. Les ressources de ce type peuvent être chargées si elles correspondent à l'une des expressions de source données. Pour cette directive, toutes les valeurs d'expression de source listées dans Syntaxe des directives de récupération sont applicables.
Exemples
>Absence d'héritage avec default-src
S'il y a d'autres directives définies, default-src ne les affecte pas. Soit l'en-tête suivant :
Content-Security-Policy: default-src 'self'; script-src https://exemple.com
Est identique à :
Content-Security-Policy: connect-src 'self';
font-src 'self';
frame-src 'self';
img-src 'self';
manifest-src 'self';
media-src 'self';
object-src 'self';
script-src https://exemple.com;
style-src 'self';
worker-src 'self'
Problème de blocage des sprites SVG avec default-src: none dans Firefox
Note : Ce problème a été corrigé dans Firefox 132 ; voir bogue 1773976 (angl.).
Lors de la création d'une CSP, vous pouvez commencer par default-src 'none' pour verrouiller le chargement de toutes les ressources, puis ajouter d'autres directives pour ouvrir la politique, vous permettant de charger uniquement les ressources dont vous avez besoin. Par exemple, pour autoriser le chargement d'images uniquement depuis la même origine :
Content-Security-Policy: default-src 'none'; img-src 'self'
Cependant, il y a un problème ici. Si vous intégrez des sprites SVG définis dans des fichiers externes avec l'élément <use>, par exemple :
<svg>
<use href="/images/icons.svg#icon"/>
</svg>
Vos images SVG seront bloquées dans Firefox si vous avez une politique default-src 'none' définie. Firefox ne traite pas le SVG comme une image intégrée comme le font les autres navigateurs, donc img-src 'self' ne permettra pas de les charger. Vous devez utiliser default-src 'self' si vous voulez que vos sprites externes se chargent dans Firefox.
Alternativement, si la politique default-src 'none' est une exigence stricte, vous pouvez inclure les sprites SVG en ligne dans la page HTML :
<body>
<svg style="display: none">
<symbol id="icon" viewBox="0 0 24 24">
<path d="…" />
</symbol>
</svg>
…
<svg>
<use href="#icon" />
</svg>
</body>
Spécifications
| Spécification |
|---|
| Content Security Policy Level 3> # directive-default-src> |