# trusted-types (/fr/docs/web-security/policies/content-security-policy/directives/trusted-types)



La directive `trusted-types` contrôle quelles Trusted Types policies une page est autorisée à créer. Seule une Trusted Types policy peut produire une valeur que le navigateur accepte à un sink DOM protégé : cette directive décide donc quelle partie de votre code peut produire ces valeurs.

<Callout type="info" title="Désormais cross-browser">
  Trusted Types est pris en charge depuis peu par les versions actuelles de Chrome, Firefox et Safari, qui gèrent toutes `trusted-types`. Voir [Prise en charge par les navigateurs](#prise-en-charge-par-les-navigateurs).
</Callout>

Elle restreint les noms de policy que `trustedTypes.createPolicy()` peut enregistrer. Le code ne peut créer qu'une policy dont le nom figure dans la liste d'autorisation ; tout autre nom lève une erreur. À elle seule, cette directive n'impose rien aux sinks. Vous protégez les sinks avec [`require-trusted-types-for`](/fr/docs/web-security/policies/content-security-policy/directives/require-trusted-types-for) ; `trusted-types` limite ensuite les policies qui existent pour alimenter ces sinks.

Le navigateur donne au nom `default` une signification spéciale : une policy enregistrée sous `default` s'exécute automatiquement chaque fois qu'une chaîne atteint un sink protégé sans Trusted Type explicite, c'est donc le point de conversion de repli.

N'autorisez que les noms de policy que votre code crée réellement :

```http
Content-Security-Policy: trusted-types default dompurify
```

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

`trusted-types` n'a pas de repli. `default-src` ne la couvre pas. (Notez que le token de nom de policy `default` n'a aucun rapport avec la directive `default-src`.)

## Valeurs [#valeurs]

Une liste de tokens de noms de policy autorisés séparés par des espaces, plus ces mots-clés :

| Valeur               | Statut   | Description                                                                                                                             |
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `<policy-name>`      | ✅ Bon    | Autorise la création d'une policy portant exactement ce nom.                                                                            |
| `'none'`             | ✅ Bon    | Interdit de créer la moindre policy.                                                                                                    |
| `'allow-duplicates'` | ❌ Risqué | Permet d'enregistrer plusieurs fois le même nom de policy, ce qui affaiblit la garantie d'une seule policy par nom.                     |
| `*`                  | ❌ Risqué | Autorise tout nom de policy : n'importe quel script, injecté compris, peut enregistrer une policy et produire des valeurs de confiance. |

Dans l'exemple d'ouverture, le token `default` autorise la policy spéciale par défaut, et `dompurify` une policy nommée que votre code enregistre pour assainir le balisage. Préférez une liste d'autorisation courte et explicite comme celle-ci à des valeurs larges.

## Exemples [#exemples]

Passez Trusted Types en report-only pour découvrir quels noms de policy votre code crée :

```http
Content-Security-Policy-Report-Only:
    require-trusted-types-for 'script';
    trusted-types default dompurify;
    report-to csp-endpoint
```

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

La directive limite la création de policies, mais ne regarde pas ce qu'une policy fait : une policy `default` faible qui renvoie son entrée telle quelle rend le sink à l'attaquant. Autoriser trop de noms, ou `*`, laisse du code injecté produire ses propres valeurs de confiance, et `'allow-duplicates'` affaiblit la garantie qu'un nom correspond à une policy connue. La directive ne prend effet qu'aux côtés de `require-trusted-types-for 'script'`, et les navigateurs antérieurs à la prise en charge de Trusted Types l'ignorent.

## Recommandation [#recommandation]

```http
Content-Security-Policy:
    require-trusted-types-for 'script';
    trusted-types default dompurify
```

N'autorisez que les noms de policy que votre code crée réellement et associez la directive à [`require-trusted-types-for 'script'`](/fr/docs/web-security/policies/content-security-policy/directives/require-trusted-types-for). Déployez d'abord la paire via un header Report-Only, comme le recommande MDN. Les versions actuelles de Chrome, Firefox et Safari la prenant toutes en charge (caniuse), Trusted Types est désormais viable sur tous les navigateurs.

## Reporting [#reporting]

Une tentative de créer un nom de policy hors de la liste d'autorisation (ou une violation détectée en mode report-only) émet un [rapport `csp-violation`](/fr/docs/web-security/reporting-api/reports/csp-violation) nommant `trusted-types` comme directive effective. Acheminez-le avec la directive [`report-to`](/fr/docs/web-security/policies/content-security-policy/directives/report-to) et le [header `Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints).

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

Prise en charge sur tous les navigateurs : les versions actuelles de Chrome (ainsi qu'Edge et Opera basés sur Chromium), Firefox et Safari. Firefox et Safari ne l'ont ajoutée que récemment, si bien que les anciennes versions installées ignorent encore la directive.

## Voir aussi [#voir-aussi]

* [Directive require-trusted-types-for](/fr/docs/web-security/policies/content-security-policy/directives/require-trusted-types-for)
* [Mots-clés et valeurs CSP](/fr/docs/web-security/policies/content-security-policy/values/csp-keywords)
* [Comment activer Trusted Types](/fr/blog/enable-trusted-types)
* [Trusted Types et eval en CSP](/fr/blog/trusted-types-eval-csp)

## Sources [#sources]

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