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



La directive `frame-src` de la politique de sécurité du contenu (CSP) contrôle
les sources qu'une page est autorisée à charger dans les éléments `<frame>` et
`<iframe>`. Si une frame pointe vers une URL que la directive n'autorise pas, le
navigateur refuse de la charger et envoie un report de violation.

Une politique minimale sûre pour cette directive, quand la page n'intègre rien :

```http
Content-Security-Policy: frame-src 'none'
```

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

`frame-src` ne fonctionne pas seule. En son absence, le navigateur se replie sur
[`child-src`](/fr/docs/web-security/policies/content-security-policy/directives/child-src),
puis, si celle-ci manque aussi, sur `default-src` :

```
frame-src -> child-src -> default-src
```

Une politique avec seulement `default-src 'self'` restreint donc déjà les frames
à la même origine. Définissez `frame-src` quand vous voulez que les sources de
frames diffèrent du reste de votre politique.

## Valeurs [#valeurs]

`frame-src` prend une liste de sources, la même grammaire que les autres
directives fetch : [sources d'hôte](/fr/docs/web-security/policies/content-security-policy/values/csp-host-source),
[sources de schéma](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source),
et les [mots-clés](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords) `'self'` ou `'none'` :

| Valeur                  | Statut   | Description                                                                              |
| ----------------------- | -------- | ---------------------------------------------------------------------------------------- |
| `'none'`                | ✅ Bon    | Bloque toutes les frames et iframes.                                                     |
| `'self'`                | ✅ Bon    | Frames provenant uniquement de l'origine de la page.                                     |
| `https://embed.example` | ✅ Bon    | Frames provenant d'un hôte précis que vous intégrez.                                     |
| `https:`                | ❌ Risqué | Autorise l'intégration de n'importe quelle page HTTPS, y compris du contenu de phishing. |
| `data:`                 | ❌ Risqué | Une frame `data:` injectée est un contenu entièrement contrôlé par l'attaquant.          |
| `*`                     | ❌ Risqué | Frames depuis n'importe où. Ne correspond jamais à `data:` ni `blob:`.                   |

Les nonces et les hashes ne s'appliquent pas à `frame-src` ; le navigateur
vérifie les documents intégrés par leur URL, pas par une empreinte inline.

## Exemples [#exemples]

```http
Content-Security-Policy: frame-src 'self' https://www.youtube.com
```

Cette page n'intègre des frames que depuis sa propre origine et depuis
`www.youtube.com`. Une frame pointant ailleurs est bloquée.

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

Restreindre les sources de frames limite la provenance du contenu intégré, ce
qui réduit la surface pour les frames tierces malveillantes ou inattendues, la
redirection de clics dans une iframe et le contenu de phishing intégré. La
directive se combine avec `frame-ancestors` (qui vous intègre) et [`connect-src`](/fr/docs/web-security/policies/content-security-policy/directives/connect-src)
(où votre page communique) dans une politique en couches.

`frame-src` n'est pas `frame-ancestors`. Ces deux directives se ressemblent et
pointent dans des directions opposées. `frame-src` contrôle les pages **que vous
intégrez** (ce que votre page peut mettre dans une iframe).
[`frame-ancestors`](/fr/docs/web-security/policies/content-security-policy/directives/frame-ancestors)
contrôle **qui peut vous intégrer** (quelles pages parentes peuvent mettre votre
page en frame), et c'est le contrôle anti-clickjacking moderne qui remplace
`X-Frame-Options`. Elles ne se remplacent pas l'une l'autre : une page définit
souvent les deux.

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

`frame-src` régit l'URL du document de la frame, pas ce qui s'exécute dans une
frame autorisée. Une fois la frame autorisée, sa propre CSP (ou son absence)
régit son contenu, si bien qu'un hôte aussi large que `https:` autorise
l'intégration de n'importe quelle page HTTPS. Une URL de frame `javascript:` ou
`data:` est vérifiée comme source de schéma, donc n'ajoutez pas ces schémas sauf
si vous voulez vraiment les autoriser.

## Recommandation [#recommandation]

```http
Content-Security-Policy: frame-src 'none'
```

Bloquez complètement les frames sauf si vous intégrez du contenu tiers. Si vous
intégrez, listez les hôtes exacts (par exemple `frame-src 'self' https://www.youtube.com`)
plutôt qu'un schéma large, pour qu'une iframe injectée ne puisse pas charger des
pages arbitraires.

## Reporting [#reporting]

Quand une frame est bloquée, le navigateur envoie un [report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation)
avec `frame-src` comme `effectiveDirective`, incluant l'URL bloquée. CentralCSP
collecte et agrège ces reports, ce qui vous permet de repérer chaque hôte que
vos pages intègrent avant de resserrer la directive.

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

Largement prise en charge par les navigateurs actuels dans le cadre de CSP
niveau 3. Le repli vers
[`child-src`](/fr/docs/web-security/policies/content-security-policy/directives/child-src)
est également largement pris en charge : si vous omettez `frame-src`, les frames
restent régies par `child-src` ou `default-src`.

## Voir aussi [#voir-aussi]

* [child-src](/fr/docs/web-security/policies/content-security-policy/directives/child-src), le repli pour les sources de frames et de workers
* [frame-ancestors](/fr/docs/web-security/policies/content-security-policy/directives/frame-ancestors), qui contrôle qui peut intégrer votre page
* [Évaluer une politique](/tools/csp-evaluator) avec l'évaluateur CSP

## Sources [#sources]

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