Trusted Types
Advanced Ecosystem 🔴 SeniorDéfinition
API navigateur, pilotée par CSP (require-trusted-types-for 'script'), qui interdit de passer une chaîne brute aux puits d'injection du DOM (innerHTML, eval, script.src…) : seuls des objets TrustedHTML/TrustedScript créés par une politique déclarée sont acceptés, sinon TypeError. C'est la défense la plus efficace contre le XSS basé sur le DOM. Disponible dans Chrome et Edge depuis la version 83 (2020), Safari 26 (septembre 2025) et Firefox 148 (février 2026) : statut Baseline depuis février 2026.
Analogie
Un vigile qui n'accepte à l'entrée que des invitations tamponnées par le bureau d'accueil : plus personne ne rentre avec un papier écrit à la main.
Exemple de code
// En-tête CSP côté serveur :
// Content-Security-Policy: require-trusted-types-for 'script'; trusted-types app
// Une seule politique, un seul endroit où l'on assainit
const policy = trustedTypes.createPolicy('app', {
createHTML: (input) => DOMPurify.sanitize(input),
createScriptURL: (url) => {
if (new URL(url, location.href).origin !== location.origin) throw new Error('URL refusée');
return url;
},
});
el.innerHTML = policy.createHTML(userInput); // OK : TrustedHTML
el.innerHTML = userInput; // TypeError : bloqué par CSP
Cas d'usage
Applications à forte surface DOM (éditeurs, dashboards, CMS) où un XSS DOM aurait un impact fort ; à déployer d'abord en mode Report-Only.
Anti-pattern
Termes liés
Fiche mise à jour le 2026-09-27