CSP: frame-ancestors

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.

La directive HTTP Content-Security-Policy (CSP) frame-ancestors spécifie les parents pouvant intégrer une page en utilisant <frame>, <iframe>, <object>, <embed>, ou <applet>.

Définir cette directive à 'none' est comparable à len-tête HTTP X-Frame-Options: deny (aussi supporté sur les anciens navigateurs).

CSP version 2
Directive type Navigation directive
default-src fallback No. Not setting this allows anything.
This directive is not supported in the <meta> element.

Syntaxe

Une ou plusieurs sources peuvent être autorisées pour cette directive :

Content-Security-Policy: frame-ancestors <source>;
Content-Security-Policy: frame-ancestors <source> <source>;

Sources

La <source> peut être une des suivantes :

Note : The frame-ancestors directive's syntax is similar to a source list of other directives (e.g. default-src), but doesn't allow 'unsafe-eval' or 'unsafe-inline' for example. It will also not fall back to a default-src setting. Only the sources listed below are allowed:

<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. Vous ne devez pas mettre de guillemets simples. Exemples :

  • http://*.example.com: correspondra à toutes les tentatives d'accès pour tous les sous-domaines de example.com via le protocole http:.

  • 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 protocole https:.

Attention : Si aucun schéma d'URL n'est spécifié comme host-source et que l'<iframe> est chargée via une URL https:, la page chargeant l'iframe doit aussi être chargée en https:, selon la spécification du W3C sur les correspondances de valeurs de sources.

<scheme-source>

Un protocole tel que http: or https:. Les deux-points sont nécessaires et vous ne devez pas mettre de guillemets. Vous pouvez aussi spécifier des schémas de données bien que ce ne soit pas recommandé.

  • data: Autorise les URI data: à être utilisées comme source de contenu. Cette pratique manque de sécurité ; une personne malveillante peut aussi injecter des URI data: arbitraires. Utilisez cette valeur avec parcimonie et certainement pas pour des scripts.
  • mediastream: permet aux URI mediastream: d'être utilisées comme source de contenu.
  • blob: permet aux URI blob: d'être utilisées comme source de contenu.
  • filesystem: Allows URI filesystem: 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 et filesystem des directives de source. Les sites nécessitant une permission pour ces types de contenu peuvent les spécifier en utilisant l'attribut Data.

'none'

Aucune source n'est admise. Vous devez mettre cette valeur entre guillemets.

Exemples

bash
Content-Security-Policy: frame-ancestors 'none';

Content-Security-Policy: frame-ancestors 'self' https://www.example.org;

Spécifications

Specification
Content Security Policy Level 3
# directive-frame-ancestors

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi