CSP: trusted-types

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

La directive HTTP Content-Security-Policy (CSP) trusted-types Expérimental 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é :

js
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

Specification
Trusted Types
# trusted-types-csp-directive

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi