CSP: trusted-types

La directive HTTP Content-Security-Policy (CSP) trusted-types informe l'agent utilisateur qu'il faut restreindre la création de règles Trusted Types (fonctions qui créent des valeurs typées non falsifiables, dans le but de les passer au puits XSS du DOM au lieu de chaines de caractères).

Conjointement à la directive require-trusted-types-for, cette directive permet aux auteurs de définir des règles empêchant d'injecter des données dans le DOM et donc de réduire la fenêtre de tir pour les attaques XSS sur le DOM à quelques pans isolés de la base de code d'une application, facilitant donc son contrôle et sa relecture. Cette directive déclare une liste de permissions de noms de règles de Trusted Types créée avec TrustedTypes.createPolicy à partir de l'API Trusted Types.

Syntaxe

Content-Security-Policy: trusted-types;
Content-Security-Policy: trusted-types 'none';
Content-Security-Policy: trusted-types <policyName>;
Content-Security-Policy: trusted-types <policyName> <policyName> 'allow-duplicates'; 
<nomRègle>
Un nom de règle est composé de caractères alphanumériques ou d'un ou plusieurs "-#=_/@.%".  Une astérisque (*) comme nom de règle informe l'agent utilisateur d'autoriser tout nom de règle unique (quoique la valeur 'allow-duplicates' pourrait permettre d'être plus laxiste à l'avenir).
'none'
Interdit la création de toute règle de Trusted Type (identique au fait de ne renseigner aucun nom de règle).
'allow-duplicates'
Autorise la création de règles dont le nom a déjà été utilisé.

Exemples

Soit l'en-tête CSP :

Content-Security-Policy: trusted-types foo bar 'allow-duplicates';

Ce code génèrera une erreur car une des règles créées a un nom non autorisé :

if (typeof trustedTypes !== 'undefined') {
  const policyFoo = trustedTypes.createPolicy('foo', {});
  const policyFoo2 = trustedTypes.createPolicy('foo', {});
  const policyBaz = trustedTypes.createPolicy('baz', {}); // Throws and dispatches a SecurityPolicyViolationEvent.
}

Prothèse d'émulation

Un prothèse d'émulation pour les Trusted Types est disponible sur Github.

Spécifications

Spécification Statut Commentaire
Trusted Types Draft Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
trusted-types
Expérimentale
Chrome Support complet 83
Support complet 83
Aucun support 73 — 76
Désactivée
Désactivée From version 73 until version 76 (exclusive): this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge ? Firefox Aucun support NonIE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Support complet 83Chrome Android Support complet 83
Support complet 83
Aucun support 73 — 76
Désactivée
Désactivée From version 73 until version 76 (exclusive): this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Non

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi