# 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. Quand elle est absente, le navigateur
retombe sur [`child-src`](/fr/docs/web-security/policies/content-security-policy/directives/child-src),
et quand celle-ci est absente 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é | Laisse n'importe quelle page HTTPS être intégrée, 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` ; les documents
intégrés sont vérifié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é. Elle 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 substituent 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, donc autoriser un hôte large comme `https:` laisse n'importe
quelle page HTTPS être intégrée. 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, donc vous pouvez voir 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, donc omettre `frame-src` laisse quand
même les frames 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/)
