# 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. Une Trusted Types policy est la seule chose qui peut produire une valeur que le navigateur accepte à un sink DOM protégé, donc cette directive décide qui, dans votre code, peut produire ces valeurs.

<Callout type="info" title="Désormais cross-browser">
  La prise en charge de Trusted Types est récemment devenue disponible dans les versions actuelles de Chrome, Firefox et Safari, qui prennent tous en charge `trusted-types`. Voir [Prise en charge par les navigateurs](#prise-en-charge-par-les-navigateurs).
</Callout>

Elle restreint l'ensemble des 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 ; toute tentative de créer un 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, affaiblissant la garantie un nom, une policy.                                      |
| `*`                  | ❌ Risqué | Autorise tout nom de policy, donc tout script (y compris un script injecté) 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` autorise 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 vérifie pas ce qu'une policy fait, donc une policy `default` faible qui renvoie son entrée telle quelle redonne un 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 la paire d'abord via un header Report-Only, comme le recommande MDN ; avec les versions actuelles de Chrome, Firefox et Safari qui livrent toutes la prise 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. Câblez la livraison 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. La prise en charge de Firefox et Safari est arrivée récemment, donc 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)
