CentralCSP
PolitiquesContent-Security-PolicyDirectives

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. Aujourd'hui, la bonne pratique est de définir 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 :

Si vous définissez child-src sans définir ni frame-src ni worker-src, les frames comme les workers utilisent 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 :

ValeurStatutDescription
'none'✅ BonBloque toutes les frames et tous les workers.
'self'✅ BonFrames et workers provenant uniquement de l'origine de la page.
embed.example.com✅ BonUn 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é

Comme child-src couvre à la fois les frames et les workers, l'utiliser comme unique contrôle revient à faire régir par une seule liste de sources deux choses 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 oublié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 fourre-tout 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, ce qui vous permet de 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.

Voir aussi

Sources

On this page