L'échappement HTML est le processus qui consiste à remplacer les caractères ayant une signification particulière en HTML par leurs références d'entité correspondantes. Les cinq caractères qui doivent obligatoirement être échappés sont l'esperluette (&), le signe inférieur (<), le signe supérieur (>), le guillemet double (") et le guillemet simple ('). Sans échappement, le navigateur interprète ces caractères comme des instructions de balisage plutôt que du texte à afficher, ce qui casse le rendu de la page et ouvre la voie aux attaques par injection.
La spécification HTML (maintenue par le WHATWG) définit deux formes de références de caractères : les entités nommées comme & et les entités numériques comme & ou &. Les entités nommées sont plus lisibles dans le code source. Les entités numériques (décimales ou hexadécimales) peuvent représenter n'importe quel point de code Unicode, ce qui les rend utiles pour les caractères sans alias nommé. Les deux formes produisent une sortie identique dans le navigateur.
Le déséchappement (aussi appelé décodage) est l'opération inverse : convertir les références d'entité en leurs caractères littéraux. C'est courant lors de l'extraction de texte d'une source HTML, de la migration de contenu entre systèmes, ou du débogage de gabarits qui encodent les entités en double. Cet outil gère les deux sens dans le navigateur, vous permettant de vérifier votre logique d'échappement ou de récupérer du texte brut depuis une source HTML en quelques secondes.
Pourquoi utiliser un outil d'échappement HTML ?
Remplacer manuellement les chevrons et les esperluettes dans de grands blocs de texte est fastidieux et source d'erreurs. Un outil dédié convertit votre entrée en une seule étape, sans installation requise.
⚡
Conversion instantanée
Collez du texte ou du HTML et obtenez immédiatement le résultat échappé ou déséchappe. Pas d'attente d'un aller-retour serveur, tout le traitement se fait localement en JavaScript.
🔒
Traitement axé sur la confidentialité
Votre entrée ne quitte jamais le navigateur. Rien n'est envoyé à un serveur ni stocké nulle part, vous pouvez donc échapper en toute sécurité du balisage contenant des identifiants, des clés API ou du code interne.
📋
Aucun compte ni configuration
Ouvrez la page et commencez à coller. Pas de connexion obligatoire, pas de saisie d'e-mail, aucun logiciel à installer. Fonctionne sur n'importe quel appareil avec un navigateur moderne.
🌐
Couverture complète des entités
Gère les cinq caractères spéciaux HTML obligatoires ainsi que les entités numériques (décimales et hexadécimales). Prend en charge la conversion aller-retour : échapper puis déséchappe restitue la chaîne d'origine.
Cas d'utilisation de l'échappement HTML
Développeur frontend : affichage des saisies utilisateur
Lors du rendu d'un texte soumis par un utilisateur dans une page, échappez-le d'abord pour empêcher le navigateur de l'interpréter comme des balises HTML. C'est la principale défense contre les attaques XSS persistantes dans tout gabarit qui affiche des chaînes brutes.
Ingénieur backend : génération de réponses HTML
Le code côté serveur qui concatène des chaînes en HTML doit échapper les valeurs dynamiques avant insertion. Utilisez cet outil pour vérifier que votre fonction d'échappement produit la sortie correcte pour les cas limites comme les guillemets imbriqués.
DevOps : intégration de configuration dans du HTML
Du JSON ou des commandes shell insérés dans une page HTML (par exemple dans une balise script ou un attribut data) nécessitent un échappement. Vérifiez que les chevrons et les esperluettes dans vos extraits de configuration sont correctement encodés.
Ingénieur QA : test des vecteurs XSS
Collez des charges XSS courantes dans l'outil pour confirmer que la sortie de votre application correspond à la version correctement échappée. Comparez la sortie échappée caractère par caractère avec ce que produit votre application.
Rédacteur technique : exemples de code dans la documentation
La publication d'extraits de code dans des docs HTML (Jekyll, Hugo, CMS personnalisés) nécessite d'échapper les chevrons pour la syntaxe des types génériques et les espaces réservés de gabarits. Collez votre exemple de code et chaque caractère spécial est encodé instantanément.
Étudiant : apprentissage des entités HTML
Saisissez ou collez n'importe quel caractère et observez ses formes d'entité nommée et numérique. Expérimentez avec des cas limites comme les espaces insécables, les tirets cadratin et les symboles Unicode pour comprendre le fonctionnement de l'encodage des caractères HTML.
Tableau de référence des entités HTML
Le tableau ci-dessous répertorie les entités HTML couramment utilisées. Les cinq caractères spéciaux (& < > " ') doivent toujours être échappés dans le contenu HTML et les valeurs d'attributs. Les autres entités sont facultatives mais utiles pour les caractères difficiles à saisir ou ambigus dans le code source.
Échappement vs. déséchappement : quand utiliser chacun
Les deux opérations sont inverses. Choisir le mauvais sens produit une sortie doublement encodée ou non protégée.
Échapper (encoder)
Utilisez cette option pour insérer du texte non fiable ou dynamique dans du HTML. Convertit le < littéral en < pour que le navigateur affiche le caractère au lieu de commencer une balise. Appliquez avant le rendu des saisies utilisateur, des entrées de journal ou de toute chaîne susceptible de contenir du balisage.
Déséchapper (décoder)
Utilisez cette option pour extraire du texte brut d'une source HTML. Convertit < en <. Appliquez lors de la migration de contenu depuis un CMS, de l'analyse de HTML extrait, ou de la correction de chaînes doublement encodées comme &amp; qui affichent des noms d'entité au lieu de caractères.
Exemples de code
Voici des exemples fonctionnels d'échappement et de déséchappement HTML en quatre langages. Chaque extrait couvre les deux sens et gère les cas limites comme les guillemets imbriqués et les entités numériques.
Quelle est la différence entre l'échappement HTML et l'encodage URL ?
L'échappement HTML remplace les caractères spéciaux en HTML (< > & " ') par des références d'entité comme < pour qu'ils s'affichent comme du texte. L'encodage URL (encodage en pourcentage) remplace les caractères invalides dans les URLs par des séquences hexadécimales %XX. Ils protègent des contextes différents : l'échappement HTML prévient l'injection de balisage, tandis que l'encodage URL garantit la validité des chaînes de requête et des segments de chemin.
Quels caractères doivent être échappés en HTML ?
Les cinq caractères qui doivent toujours être échappés sont : & (esperluette), < (inférieur), > (supérieur), " (guillemet double dans les attributs) et ' (guillemet simple dans les attributs). Ne pas échapper l'un d'eux peut casser le rendu ou créer une vulnérabilité de type cross-site scripting.
L'entité ' est-elle valide en HTML5 ?
Oui. L'entité nommée ' est définie dans la spécification HTML5 et prise en charge par tous les navigateurs modernes. Elle ne faisait pas partie de HTML 4, qui ne reconnaissait que &, <, > et ". Si vous devez prendre en charge d'anciens analyseurs HTML 4, utilisez la forme numérique ' à la place.
Comment corriger les entités HTML doublement encodées comme &amp; ?
Le double encodage se produit quand une chaîne déjà échappée passe à nouveau dans la fonction d'échappement. La correction consiste à déséchapper jusqu'à ce que la sortie soit stable. Collez la chaîne doublement encodée dans cet outil en mode déséchappement, puis relancez si des références & subsistent. Pour éviter le double encodage, vérifiez si l'entrée est déjà échappée avant d'appliquer la fonction d'échappement.
Puis-je utiliser des entités HTML dans des chaînes JavaScript ?
Les entités HTML sont interprétées par l'analyseur HTML, non par le moteur JavaScript. Dans un bloc script, le code s'exécute après que l'analyseur HTML a traité la page, donc < dans un bloc script devient < avant que JavaScript le lise. Pour les gestionnaires d'événements inline (onclick, etc.), la valeur de l'attribut est d'abord décodée HTML, puis exécutée comme JavaScript. Dans les fichiers .js externes, les entités n'ont aucune signification particulière et sont traitées comme du texte littéral.
Quelle est la différence entre htmlspecialchars et htmlentities en PHP ?
htmlspecialchars() échappe uniquement les cinq caractères spéciaux (& < > " ') qui affectent la structure HTML. htmlentities() échappe ces cinq caractères plus tous ceux qui ont une entité HTML nommée, comme le signe copyright et les lettres accentuées. Pour des raisons de sécurité, htmlspecialchars() avec ENT_QUOTES est suffisant. htmlentities() est utile quand vous avez besoin d'une sortie ASCII-safe pour des systèmes ne gérant pas l'UTF-8.
L'échappement HTML est-il suffisant pour prévenir les XSS ?
L'échappement HTML prévient les XSS dans le cas le plus courant : l'insertion de texte non fiable dans le contenu des éléments HTML ou les valeurs d'attributs. Il ne protège pas les autres contextes d'injection. Insérer des données utilisateur dans un bloc script nécessite l'échappement de chaînes JavaScript. L'insertion dans un attribut style nécessite l'échappement CSS. L'insertion dans un attribut URL (href, src) nécessite la validation de l'URL et son encodage. Une défense XSS complète applique un échappement spécifique au contexte à chaque point d'insertion.