child-src
La directive CSP child-src est un repli historique pour frame-src et worker-src. Préférez plutôt ces deux directives.
Dernière mise à jour:
La directive child-src contrôle les sources des contextes de navigation imbriqués et des workers sous une politique de sécurité du contenu (CSP). Dans CSP niveau 3, c'est un repli historique : elle se situe entre les directives spécifiques (frame-src pour les frames, worker-src pour les workers) et default-src. Préférez les directives spécifiques.
child-src est historique, donc le bon usage est la forme moderne, définissez plutôt les deux directives spécifiques :
Content-Security-Policy: frame-src https://embed.example.com; worker-src 'self'Chaîne de repli
child-src retombe elle-même sur default-src, et elle sert de cible de repli pour deux autres directives :
frame-srcretombe surchild-src, puis surdefault-src.worker-srcretombe surchild-src, puis surscript-src, puis surdefault-src.
Donc si vous définissez child-src mais ni frame-src ni worker-src, les frames et les workers utilisent tous deux la valeur de child-src. Si vous définissez frame-src ou worker-src directement, elles prennent le relais et child-src ne s'applique plus à elles.
Valeurs
child-src prend une liste de sources séparées par des espaces, combinant sources mot-clé, sources d'hôte et sources de schéma :
| Valeur | Statut | Description |
|---|---|---|
'none' | ✅ Bon | Bloque toutes les frames et tous les workers. |
'self' | ✅ Bon | Frames et workers provenant uniquement de l'origine de la page. |
embed.example.com | ✅ Bon | Un hôte précis, appliqué à la fois aux frames et aux workers. |
https: | ❌ Risqué | N'importe quel hôte HTTPS peut fournir du code de worker via le repli. |
blob: | ❌ Risqué | S'applique aux workers via le repli et élargit ce qui peut s'exécuter comme script. |
* | ❌ Risqué | Frames et workers depuis n'importe où. Ne correspond jamais à data: ni blob:. |
Les nonces et les hashes ne s'appliquent pas.
Exemples
Content-Security-Policy:
default-src 'self';
frame-src https://embed.example.com;
worker-src 'self'Cette politique définit les frames et les workers directement et n'utilise pas du tout child-src, ce qui est la forme recommandée. Vous ne recourriez à child-src que pour couvrir les deux à la fois dans une politique qui ne nomme pas les directives spécifiques.
Usage courant
Dans CSP niveau 2, child-src était la directive unique pour les iframes et les workers. CSP niveau 3 a scindé cette responsabilité : les frames sont passées à frame-src et les workers à worker-src, ce qui permet de définir des règles différentes pour chacun. child-src fonctionne toujours comme repli pour la compatibilité, mais les nouvelles politiques devraient définir les deux directives spécifiques, car regrouper frames et workers sous une seule règle est rarement ce que vous voulez.
Notes de sécurité
Parce que child-src couvre à la fois les frames et les workers, l'utiliser comme unique contrôle signifie qu'une seule liste de sources régit deux capacités très différentes : quels sites vous intégrez, et d'où viennent vos scripts de worker. Les scripts de worker s'exécutent, donc ils méritent une règle plus stricte que celle dont les frames intégrées ont généralement besoin. Les séparer avec worker-src et frame-src vous permet de garder les workers à 'self' tout en intégrant les frames tierces dont vous avez besoin. L'évaluateur CSP signale les endroits où une politique repose sur le repli historique.
Contournements et risques connus
Le risque n'est pas tant un contournement qu'une distinction manquée. Si vous ne définissez que child-src, une valeur permissive choisie pour l'intégration (autoriser la frame d'un widget tiers) s'applique aussi aux sources de scripts de worker, ce qui peut être plus permissif que prévu pour du code exécutable. Définissez les directives spécifiques pour que chacune reçoive la règle qui lui convient.
Recommandation
Content-Security-Policy: frame-src https://embed.example.com; worker-src 'self'Ne construisez pas une nouvelle politique sur child-src ; c'est le parapluie historique de CSP niveau 2. Définissez frame-src et worker-src directement pour que les frames intégrées et le code de worker exécutable aient chacun leur propre règle.
Reporting
Quand le chargement d'une frame ou d'un worker est bloqué, le navigateur envoie un report csp-violation ; le champ effectiveDirective nomme la directive qui a régi le chargement (frame-src ou worker-src, résolue via la chaîne de repli). CentralCSP collecte et agrège ces reports, donc vous pouvez voir quels chargements dépendent encore du repli child-src avant de scinder la politique.
Prise en charge par les navigateurs
child-src est prise en charge par tous les navigateurs qui implémentent CSP. La scission en frame-src et worker-src est également largement prise en charge, donc préférez celles-ci.