Retour au blog
ReacttechniqueXSS

React dangerouslySetInnerHTML : vos composants sont des portes ouvertes au XSS

Publié le 2026-03-155 min de lectureCleanIssue

> En bref : L'utilisation de dangerouslySetInnerHTML sans sanitization expose votre application au XSS. Voici comment corriger.

Le piège du CMS content

Quand votre application React affiche du contenu HTML depuis un CMS ou une API, vous utilisez probablement dangerouslySetInnerHTML. Le nom est un avertissement : mais beaucoup l'ignorent.

Le risque concret

Si le contenu injecté contient du JavaScript malveillant (<script>, onerror=, onload=), il sera exécuté dans le navigateur de l'utilisateur. Vol de cookies, redirection vers un site de phishing, exfiltration de données.

La solution : DOMPurify

Utilisez DOMPurify pour sanitizer le HTML avant de l'injecter : dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(content) }}.

Ce que nous trouvons

Dans les applications React que nous auditons, 40% utilisent dangerouslySetInnerHTML sans sanitization. C'est une faille XSS directe.

À retenir

  • Identifiez et testez vos surfaces d'attaque exposées avant qu'un tiers ne le fasse.
  • Les contrôles de sécurité côté client (frontend) ne remplacent jamais une validation côté serveur.
  • Un audit régulier est plus efficace qu'un audit ponctuel — les failles apparaissent à chaque déploiement.
  • Vous éditez un logiciel RH, paie ou recrutement ? CleanIssue réalise des audits de sécurité pour SaaS RH en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit