# fenced-frame-src (/fr/docs/web-security/policies/content-security-policy/directives/fenced-frame-src)



La directive `fenced-frame-src` de la politique de sécurité du contenu (CSP)
contrôle les sources chargeables dans un élément `<fencedframe>`. Une fenced
frame est un contexte intégré isolé de la page qui l'héberge, utilisé par des API
axées sur la confidentialité comme Protected Audience et Shared Storage.

<Callout type="warn" title="Expérimental, Chromium uniquement">
  `fenced-frame-src` est expérimentale et n'est livrée que dans les navigateurs basés sur Chromium. Elle n'est pas Baseline et n'est pas implémentée dans Firefox ni Safari. La directive est liée aux API de confidentialité des fenced frames, encore en évolution, donc son comportement et sa grammaire peuvent changer entre les versions de Chromium. Considérez-la comme instable et vérifiez la section Prise en charge par les navigateurs avant de vous y fier.
</Callout>

Une politique minimale pour cette directive, avec la valeur la plus stricte
qu'elle accepte :

```http
Content-Security-Policy: fenced-frame-src https:
```

## Chaîne de repli [#chaîne-de-repli]

Quand `fenced-frame-src` est absente, le navigateur retombe sur
[`frame-src`](/fr/docs/web-security/policies/content-security-policy/directives/frame-src),
puis sur
[`child-src`](/fr/docs/web-security/policies/content-security-policy/directives/child-src) :

```
fenced-frame-src -> frame-src -> child-src
```

Une politique qui contraint déjà `frame-src` contraint donc aussi les fenced
frames, sauf si vous définissez `fenced-frame-src` avec une valeur différente.

## Valeurs [#valeurs]

`fenced-frame-src` accepte une liste de sources restreinte. Contrairement aux
autres directives fetch, elle n'accepte que la
[source de schéma](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source)
`https:` et le joker `*` :

| Valeur   | Statut          | Description                                                                        |
| -------- | --------------- | ---------------------------------------------------------------------------------- |
| `https:` | 🧪 Expérimental | Fenced frames depuis toute origine HTTPS. Le seul schéma que la directive accepte. |
| `*`      | 🧪 Expérimental | Équivalent à `https:` ici, puisqu'une fenced frame doit être servie en HTTPS.      |

Les sources d'hôte, `'self'`, `'none'` et les sources nonce ou hash ne sont pas
acceptées par cette directive.

## Exemples [#exemples]

Une politique qui épingle les frames ordinaires sur l'origine de la page tout en
autorisant les fenced frames, qui ne peuvent pas être épinglées plus strictement
que `https:` :

```http
Content-Security-Policy: frame-src 'self'; fenced-frame-src https:
```

Utiliser `*` au lieu de `https:` est équivalent pour cette directive, puisqu'une
fenced frame doit de toute façon être servie en HTTPS.

## Notes de sécurité [#notes-de-sécurité]

Une fenced frame est déjà fortement isolée de la page qui l'intègre, par
conception. `fenced-frame-src` permet à une politique de déclarer, au niveau du
document, si des fenced frames peuvent être créées et depuis quel schéma, de
sorte qu'une page qui n'utilise pas les API concernées peut les refuser via sa
CSP.

## Contournements et risques connus [#contournements-et-risques-connus]

Parce que la directive n'accepte que `https:` et `*`, elle ne peut pas
restreindre les fenced frames à un hôte précis comme
[`frame-src`](/fr/docs/web-security/policies/content-security-policy/directives/frame-src)
restreint les frames ordinaires. La fonctionnalité est liée à des API de
confidentialité en évolution, donc son comportement exact et la grammaire de la
directive peuvent changer entre les versions de Chromium.

## Recommandation [#recommandation]

```http
Content-Security-Policy: fenced-frame-src https:
```

Ne définissez `fenced-frame-src` que si votre page utilise réellement des fenced
frames ; `https:` est la valeur la plus stricte qu'elle accepte. Si vous ne les
utilisez pas, n'ajoutez rien, un `frame-src` strict couvre déjà les fenced frames
via la chaîne de repli. Dans les deux cas, gardez `frame-src` comme la vraie
restriction, puisque cette directive ne peut pas épingler d'hôtes et ne
fonctionne que dans Chromium.

## Reporting [#reporting]

Quand une fenced frame est bloquée dans un navigateur qui la prend en charge, il
envoie un [report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation)
avec `fenced-frame-src` comme `effectiveDirective`. CentralCSP collecte et agrège
ces reports avec le reste de votre trafic CSP, donc vous pouvez surveiller cette
surface expérimentale sans configuration supplémentaire.

## Prise en charge par les navigateurs [#prise-en-charge-par-les-navigateurs]

Navigateurs basés sur Chromium uniquement (Chrome, Edge et
Opera), et encore expérimentale. Non implémentée dans Firefox ni Safari, et pas
dans Baseline. Les navigateurs qui n'implémentent pas les fenced frames ignorent
la directive.

## Voir aussi [#voir-aussi]

* [frame-src](/fr/docs/web-security/policies/content-security-policy/directives/frame-src), le repli et la directive des frames ordinaires
* [child-src](/fr/docs/web-security/policies/content-security-policy/directives/child-src), le repli suivant dans la chaîne
* [Évaluer une politique](/tools/csp-evaluator) avec l'évaluateur CSP

## Sources [#sources]

* [MDN, CSP fenced-frame-src](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/fenced-frame-src)
* [W3C, Content Security Policy Level 3](https://www.w3.org/TR/CSP3/)
