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



La directive `media-src` contrôle la provenance des médias sous une politique de sécurité du contenu (Content Security Policy, CSP). Elle régit le `src` des éléments `<audio>` et `<video>` ainsi que leurs enfants `<source>` et `<track>`, donc elle décide depuis quelles origines votre page peut diffuser des médias.

Une politique minimale sûre pour cette directive:

```http
Content-Security-Policy: media-src 'self' https://media.example.com
```

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

`media-src` se replie sur [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/default-src). Si vous ne définissez pas `media-src`, les médias sont régis par ce que `default-src` autorise. Si ni l'une ni l'autre n'est présente, les médias se chargent depuis n'importe où.

## Valeurs [#valeurs]

`media-src` accepte une liste de sources séparées par des espaces combinant [sources mots-clés](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords), [host sources](/fr/docs/web-security/policies/content-security-policy/values/csp-host-source) et [scheme sources](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source):

| Valeur              | Statut   | Description                                                                                                              |
| ------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| `'none'`            | ✅ Bon    | Bloque tous les chargements de médias.                                                                                   |
| `'self'`            | ✅ Bon    | Médias de l'origine de la page uniquement.                                                                               |
| `media.example.com` | ✅ Bon    | Un host de médias ou de streaming nommé.                                                                                 |
| `https:`            | ✅ Bon    | N'importe quelle origine HTTPS. Large; préférez des hosts nommés.                                                        |
| `blob:`             | ✅ Bon    | Médias générés côté client (Media Source Extensions, flux enregistrés).                                                  |
| `mediastream:`      | ✅ Bon    | Flux de médias en direct. Niche, et pertinent pour `media-src` uniquement.                                               |
| `*`                 | ❌ Risqué | N'importe quel host peut recevoir des requêtes de médias, un canal dissimulé. Ne correspond jamais à `data:` ni `blob:`. |

Les nonces et les hashes ne s'appliquent pas aux médias.

## Exemples [#exemples]

```http
Content-Security-Policy:
  default-src 'self';
  media-src 'self' https://media.example.com blob:
```

Cela autorise les médias depuis votre propre origine, un host de médias nommé et les URL `blob:`.

## Usage courant [#usage-courant]

`media-src` a couramment besoin de `blob:` quand vous lisez des médias générés ou mis en tampon côté client, par exemple avec les Media Source Extensions, `URL.createObjectURL` ou de l'audio et de la vidéo enregistrés. Un lecteur de streaming qui construit son tampon en JavaScript échouera sans `blob:` dans `media-src`.

Si vous intégrez le *lecteur* vidéo d'un tiers dans une iframe, cela relève de [`frame-src`](/fr/docs/web-security/policies/content-security-policy/directives/frame-src), pas de `media-src`. `media-src` ne s'applique qu'aux éléments média rendus directement sur votre page.

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

Les médias sont un type de ressource à faible risque: ils ne peuvent pas s'exécuter, et un fichier média bloqué dégrade la page sans casser sa logique. La directive limite la provenance des flux de médias, ce qui compte surtout pour l'intégrité du contenu et pour éviter de servir des médias depuis des hosts non fiables. Vérifiez la politique globale avec l'[évaluateur CSP](/tools/csp-evaluator).

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

Comme les médias ne peuvent pas exécuter de code, `media-src` est un contrôle de contenu plutôt qu'un contrôle d'injection. Le risque principal est une liste de sources trop large comme `media-src *`, qui laisse un élément média injecté envoyer des requêtes vers n'importe quel host comme canal dissimulé. Un joker `*` ne correspond pas à `blob:`, donc listez `blob:` explicitement quand vous avez besoin de médias générés côté client.

## Recommandation [#recommandation]

```http
Content-Security-Policy: media-src 'self' https://media.example.com
```

Limitez `media-src` à votre propre origine plus le host de médias depuis lequel vous diffusez. N'ajoutez `blob:` que quand votre lecteur construit les médias côté client, par exemple via les Media Source Extensions ou `URL.createObjectURL`. Évitez `*`, qui laisse un élément média injecté envoyer des requêtes vers n'importe quel host.

## Reporting [#reporting]

Quand un chargement de média est bloqué, le navigateur envoie un [report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation) avec `media-src` comme `effectiveDirective`, incluant l'URL bloquée. CentralCSP collecte et agrège ces reports, pour que vous voyiez chaque host de médias que vos pages utilisent réellement avant de resserrer la directive.

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

`media-src` fait partie de CSP Level 1 et est prise en charge par tous les navigateurs qui implémentent CSP. Elle est stable et largement disponible.

## Voir aussi [#voir-aussi]

* [Directives de la Content Security Policy](/fr/docs/web-security/policies/content-security-policy/introduction/csp-directives)
* [default-src](/fr/docs/web-security/policies/content-security-policy/directives/default-src)
* [frame-src](/fr/docs/web-security/policies/content-security-policy/directives/frame-src)
* [Valeurs scheme source](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source)
* [Suite CSP CentralCSP](/platform/csp-builder)

## Sources [#sources]

* [MDN, CSP media-src](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/media-src)
* [W3C, Content Security Policy Level 3](https://www.w3.org/TR/CSP3/)
* [W3C CSP editor's draft](https://w3c.github.io/webappsec-csp/)
