# 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` se replie 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é | Un lien de manifeste injecté peut alors 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 se contentent du repli 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é : il garde le manifeste épinglé sur un hôte de confiance, pour qu'un `<link rel="manifest">` injecté ne puisse pas lui 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 permettrait à un lien de manifeste injecté de pointer vers un hôte non fiable. Garder `manifest-src` à `'self'`, ou sur le CDN précis que vous utilisez, élimine ce risque. Aucun risque d'exécution n'entre en jeu ici, la directive reste donc 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, si bien qu'un lien de manifeste mal configuré ou injecté remonte dès sa première occurrence.

## 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. Sur un navigateur qui ne la reconnaît pas, le manifeste se replie 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/)
