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



La directive `manifest-src` contrôle la provenance du manifeste d'application web sous une politique de sécurité du contenu (CSP). Le manifeste est le fichier JSON référencé par `<link rel="manifest">` qui décrit une progressive web app : son nom, ses icônes, sa couleur de thème et son URL de démarrage.

Une politique minimale sûre pour cette directive :

```http
Content-Security-Policy: manifest-src 'self'
```

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

`manifest-src` retombe sur [`default-src`](/fr/docs/web-security/policies/content-security-policy/directives/default-src). Si vous ne définissez pas `manifest-src`, le manifeste est régi par ce que `default-src` autorise. Si aucune des deux n'est présente, le manifeste peut se charger depuis n'importe où.

## Valeurs [#valeurs]

`manifest-src` prend une liste de sources séparées par des espaces, combinant [sources mot-clé](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords), [sources d'hôte](/fr/docs/web-security/policies/content-security-policy/values/csp-host-source) et [sources de schéma](/fr/docs/web-security/policies/content-security-policy/values/csp-scheme-source) :

| Valeur            | Statut   | Description                                                               |
| ----------------- | -------- | ------------------------------------------------------------------------- |
| `'none'`          | ✅ Bon    | Bloque tout chargement de manifeste.                                      |
| `'self'`          | ✅ Bon    | Le manifeste se charge depuis l'origine de la page. La valeur habituelle. |
| `cdn.example.com` | ✅ Bon    | L'origine CDN exacte depuis laquelle vous servez le manifeste.            |
| `https:`          | ✅ Bon    | Toute origine HTTPS. Large ; préférez `'self'` ou l'hôte exact.           |
| `*`               | ❌ Risqué | Laisse un lien de manifeste injecté pointer vers n'importe quel hôte.     |

Les nonces et les hashes ne s'appliquent pas.

## Exemples [#exemples]

```http
Content-Security-Policy:
  default-src 'self';
  manifest-src 'self'
```

Cela n'autorise le chargement du manifeste que depuis votre propre origine, le cas habituel puisque le manifeste est presque toujours livré avec le site.

## Usage courant [#usage-courant]

La plupart des sites servent le manifeste depuis leur propre origine, donc `manifest-src 'self'` est la valeur courante, et beaucoup de sites le laissent simplement retomber sur `default-src`. Vous n'avez besoin de nommer un autre hôte que si vous servez le fichier manifeste depuis un CDN sur une origine différente. Notez que les requêtes de manifeste sont soumises aux règles CORS propres au manifeste en plus de CSP, donc un manifeste cross-origin doit être autorisé des deux côtés.

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

Le manifeste est une ressource déclarative à faible risque : il ne peut pas exécuter de code, et un manifeste bloqué dégrade l'expérience d'installation et de thème plutôt que de casser la page. `manifest-src` est avant tout un contrôle d'intégrité, qui maintient le manifeste épinglé sur un hôte de confiance afin qu'un `<link rel="manifest">` injecté ne puisse pas substituer une description d'application contrôlée par un attaquant.

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

Le risque principal est une liste de sources trop large, qui laisserait un lien de manifeste injecté pointer vers un hôte non fiable. Garder `manifest-src` à `'self'`, ou sur le CDN précis que vous utilisez, élimine ce risque. Il n'y a pas de risque d'exécution à contourner ici, donc cette directive est simple.

## Recommandation [#recommandation]

```http
Content-Security-Policy: manifest-src 'self'
```

Le manifeste est presque toujours livré avec le site, donc `'self'` couvre la plupart des déploiements. Nommez plutôt l'origine CDN exacte si vous le servez depuis un CDN ; il n'y a aucune raison d'autoriser plus large pour un seul fichier bien identifié.

## Reporting [#reporting]

Quand un chargement de manifeste est bloqué, le navigateur envoie un [report csp-violation](/fr/docs/web-security/reporting-api/reports/csp-violation) avec `manifest-src` comme `effectiveDirective`, incluant l'URL bloquée. CentralCSP collecte et agrège ces reports, donc un lien de manifeste mal configuré ou injecté apparaît dès qu'il survient.

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

`manifest-src` a été ajoutée dans CSP niveau 3 et est prise en charge par les navigateurs qui implémentent les manifestes de progressive web app. Là où un navigateur ne la reconnaît pas, le manifeste retombe sur `default-src`.

## Voir aussi [#voir-aussi]

* [Directives 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)
* [img-src](/fr/docs/web-security/policies/content-security-policy/directives/img-src)
* [Valeurs de source d'hôte](/fr/docs/web-security/policies/content-security-policy/values/csp-host-source)
* [Suite CSP de CentralCSP](/platform/csp-builder)

## Sources [#sources]

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