La directive HTTP Content-Security-Policy
(CSP) worker-src
spécifie les sources valides pour les scripts Worker
, SharedWorker
et ServiceWorker
.
Version de CSP | 3 |
---|---|
Type de directive | Fetch directive |
Valeur par défaut |
Si cette directive est absente, l'agent utilisateur consultera d'abord la directive Chrome 59 et plus ne consultent pas la directive Edge 17 ne consulte pas la directive |
Syntaxe
Une ou plusieurs sources peuvent ĂȘtre autorisĂ©es pour cette directive :
Content-Security-Policy: worker-src <source>; Content-Security-Policy: worker-src <source> <source>;
Sources
La <source> peut ĂȘtre une des suivantes :
- <host-source>
- Des hÎtes Internet par leur nom de domaine ou adresse IP, aussi bien qu'un protocole et/ou un numéro de port. L'adresse du site peut inclure un caractÚre de remplacement optionnel (l'astérisque
'*'
), qui ne peut ĂȘtre utilisĂ©e que pour indiquer un sous-domaine ou que tous les ports existants sont des sources valides.
Exemples:http://*.example.com
: correspondra Ă toutes les tentatives d'accĂšs pour tous les sous-domaines de example.com via le protocolehttp:
.mail.example.com:443
: correspondra Ă toutes les tentatives d'accĂšs sur le port 443 de mail.example.com.https://store.example.com
: correspondra Ă toutes les tentatives d'accĂšs Ă store.example.com via le protocolehttps:
.*.example.com
: correspondra Ă toutes les tentatives d'accĂšs pour tous les sous-domaines de example.com en utilisant le protocole courant.
- <scheme-source>
- Un protocole tel que
http:
ouhttps:
. Les deux-points sont nĂ©cessaires. Contrairement Ă d'autres valeurs ci-bas, les guillemets ne devraient pas ĂȘtre employĂ©s. Vous pouvez aussi spĂ©cifier des schĂ©mas de donnĂ©es (quoi que ce ne soit pas recommandĂ©).data:
permet aux URIdata:
d'ĂȘtre utilisĂ©es comme sources de contenu. Cette pratique manque de sĂ©curitĂ© ; une personne malveillante peut aussi injecter des URI data: arbitraires. Utilisez cette valeur avec parcimonie certainement pas pour des scripts.mediastream:
permet aux URImediastream:
d'ĂȘtre utilisĂ©es comme source de contenu.blob:
permet aux URIblob:
d'ĂȘtre utilisĂ©es comme source de contenu.filesystem:
Allows URIfilesystem:
d'ĂȘtre utilisĂ©es comme source de contenu.
'self'
- Cette valeur fait référence au domaine dont est originaire le document protégé, y compris le protocole et le numéro de port. Vous devez mettre cette valeur entre guillemets. Certains navigateurs excluent spécifiquement les valeurs
blob
etfilesystem
des directives de source. Les sites nécessitant une permission pour ces types de contenu peuvent les spécifier en utilisant l'attribut Data. 'unsafe-eval'
- Permet l'usage de la fonction
eval()
et de méthodes similaires pour créer du code à partir de chaines de caractÚres. Vous devez mettre cette valeur entre guillemets. 'unsafe-hashes'
- Permet l'usage de certains écouteurs d'évÚnements par attributs. Si vous n'avez besoin que d'écouteurs d'évÚnements par attributs et non d'éléments
<script>
embarqués ou d'URLjavascript:
, cette valeur est plus sécurisée queunsafe-inline
. 'unsafe-inline'
- Permet l'usage de ressources embarquées, tels que des éléments
<script>
(sanssrc
), d'URLjavascript:
, de gestionnaire d'évÚnement par attributs (on<eventName>
), et d'éléments<style>
. Vous devez mettre cette valeur entre guillemets. 'none'
- Aucune source n'est admise. Vous devez mettre cette valeur entre guillemets.
- 'nonce-<base64-value>'
- Une liste de permissions pour des scripts embarqués spécifiques en utilisant un nonce (number used once, nombre à usage unique) cryptographique. Le serveur doit générer un nonce à chaque fois qu'il transmet une réponse. Il est extrÚmement important de fournir des nonces non prédictibles, puisque le contraire permettrait aisément de contourner la stratégie de sécurité. Voir inline script non fiables pour avoir un exemple. Spécifier un nonce implique que les navigateurs modernes ignoreront la valeur
'unsafe-inline'
, qui peut toutefois ĂȘtre laissĂ©e pour les anciens navigateurs ne supportant pas les nonces. - '<hash-algorithm>-<base64-value>'
- Un hash sha256, sha384 ou sha512 d'un
<script>
ou d'un<style>
. Cette source est composée de deux parties séparées par un tiret : le nom de l'algorithme de chiffrage utilisé pour générer le hash à gauche et le hash encodé en base 64 à droite. Lors de la génération du hash, il ne faut pas inclure les balises<script>
or<style>
et tenir compte de la casse et des caractÚres blancs (espaces, retours à la ligne, etc.). Voir inline script non fiables pour en avoir un exemple. En CSP 2.0, cette valeur ne s'applique qu'aux scripts embarqués. CSP 3.0 le permet aussi dans le cas de scripts externes.
Exemples
Cas de violation
Soit cet en-tĂȘte CSP :
Content-Security-Policy: worker-src https://example.com/
Worker
, SharedWorker
et ServiceWorker
seront bloqués et ne se chargeront pas :
<script>
var blockedWorker = new Worker("data:application/javascript,...");
blockedWorker = new SharedWorker("https://not-example.com/");
navigator.serviceWorker.register('https://not-example.com/sw.js');
</script>
Spécifications
Spécification | Statut | Commentaire |
---|---|---|
Content Security Policy Level 3 La définition de 'worker-src' dans cette spécification. |
Version de travail | Définition initiale. |
Compatibilité des navigateurs
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.