Skip to main content
Tous les termes Glossary

Assainissement du DOM

Definition

L'assainissement du DOM est le processus qui consiste à nettoyer et à valider le contenu HTML avant son insertion dans le modèle objet de document, ce qui permet d'éviter les attaques XSS et autres vulnérabilités liées à l'injection. Les navigateurs modernes fournissent des API d'assainissement intégrées, tandis que diverses bibliothèques offrent des fonctions d'assainissement. Un assainissement approprié est essentiel lorsqu'il s'agit de contenu généré par les utilisateurs ou de données tierces qui doivent être rendues au format HTML.

Ce qu'est l'assainissement du DOM

L'assainissement du DOM est le processus de nettoyage d'un HTML non fiable afin qu'il puisse être inséré dans une page sans porter de balisage exécutable ou dangereux. Lorsque du code affecte une chaîne à innerHTML, outerHTML ou un sink DOM similaire, le navigateur l'analyse en nœuds vivants, y compris toute balise script, gestionnaire onerror, URL javascript: ou autre contenu actif qu'elle contient. Un assainisseur analyse ce HTML, parcourt l'arbre obtenu et supprime ou réécrit tout ce qui ne figure pas sur une liste d'autorisation de balises et d'attributs sûrs, renvoyant un balisage qui s'affiche comme prévu mais ne peut exécuter de code. Des bibliothèques comme DOMPurify le font de manière robuste, et les navigateurs proposent désormais une Sanitizer API native ainsi que la méthode plus sûre setHTML pour le même objectif.

Pourquoi l'assainissement compte

L'assainissement est une défense de premier plan contre le XSS basé sur le DOM et le XSS stocké. Toute fonctionnalité qui rend du contenu généré par l'utilisateur ou tiers sous forme de HTML, commentaires, champs de texte enrichi, messages de chat ou blocs de CMS, est un point d'injection potentiel, et le simple échappement ne suffit pas lorsque le contenu est réellement censé être du HTML. Les approches naïves, comme mettre la balise script sur liste noire ou utiliser une regex pour retirer des éléments, passent à côté de l'immense espace des astuces d'analyse : mutation XSS, balisage malformé que les navigateurs réparent en une forme exécutable, particularités de contenu étranger SVG et MathML, et attributs de gestionnaire d'événements. Un assainisseur éprouvé qui opère sur l'arbre analysé plutôt que sur le texte brut comble ces failles et transforme une vulnérabilité de gravité élevée en sortie inerte.

Bonne pratique, et le rôle complémentaire de cside

Privilégiez les sinks sûrs tels que textContent ou la liaison de framework, et ne recourez à l'insertion de HTML que lorsque vous y êtes obligé ; assainissez alors avec une bibliothèque maintenue comme DOMPurify ou la Sanitizer API native plutôt qu'avec des filtres faits maison, en la gardant à jour à mesure que de nouveaux contournements sont découverts. Associez-la à une Content Security Policy stricte pour qu'une charge utile passée entre les mailles ne puisse malgré tout s'exécuter. L'assainissement réside dans votre propre code, il ne couvre donc pas ce qu'un script tiers compromis fait une fois chargé, puisque ce script peut lui-même appeler innerHTML. cside comble cette lacune en faisant transiter les scripts tiers par un méthode Script et en analysant la charge utile, détectant et bloquant les écritures DOM dangereuses que ces scripts tentent et les consignant à des fins forensiques.

Définition

L'échappement équivaut-il à l'assainissement du DOM ?

Non. L'échappement convertit des caractères comme les chevrons en entités HTML afin que le texte s'affiche littéralement, ce qui est correct lorsque vous voulez présenter du balisage sous forme de texte brut. L'assainissement conserve le contenu comme du vrai HTML mais en retire les parties dangereuses. Utilisez l'échappement pour la sortie de texte et l'assainissement uniquement lorsque du contenu utilisateur doit être rendu comme du balisage réel.

Définition

Devrais-je écrire mon propre assainisseur HTML ?

Presque jamais. L'analyse du HTML par les navigateurs comporte d'innombrables cas limites, contenu étranger, particularités de mutation et récupération de balisage malformé, que les filtres et regex écrits à la main manquent, menant à des contournements. Utilisez une bibliothèque maintenue et largement testée comme DOMPurify ou la Sanitizer API intégrée, et gardez-la à jour à mesure que les chercheurs découvrent de nouvelles techniques d'évasion.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Réserver une démonstration

Envie de passer tout ça en revue avec un ingénieur ?

Trente minutes, sur votre propre site. Pas de slides.

Réservez une démo personnalisée pour voir :

Comment atteindre la conformité PCI DSS 6.4.3 et 11.6.1 en 1 jour
Pourquoi les scripts tiers représentent un risque de sécurité pour vous et vos visiteurs
Comment surveiller les fuites de confidentialité et de consentement (RGPD, CCPA) sur chaque tiers
Comment stopper l'abus d'inscriptions, le partage de comptes et la fraude aux rétrofacturations grâce au device intelligence
Comment détecter et contrôler les agents IA et les bots qui atteignent votre site en temps réel

Vous préférez simplement poser une question ?

Recherche de créneaux…

Humains uniquement. On le saurait.

Un problème pour réserver ? Ouvrir le calendrier dans un nouvel onglet

Quel problème cherchez-vous à résoudre ?

Dites-le-nous en une ligne et nous reviendrons vers vous avec quelque chose d'utile, pas un discours générique.

Nous aidons souvent sur :

Voir quels scripts tiers s'exécutent sur votre site
Les preuves pour PCI DSS 6.4.3 et 11.6.1
Les bots, les agents IA et le vol de comptes

Vous préférez réserver un créneau ? Choisir un créneau