Encodeur / Décodeur HTML
Encodez du texte en entités HTML ou décodez des entités HTML en texte.
Comment utiliser Encodeur / Décodeur HTML
- 1
Saisissez votre texte ou HTML
Collez le texte brut à échapper, ou les entités HTML à reconvertir, dans la zone de saisie.
- 2
Choisissez encoder ou décoder
Cliquez sur Encoder en entités HTML pour convertir des caractères comme < > & en entités sûres, ou sur Décoder les entités HTML pour reconvertir les entités en caractères lisibles.
- 3
Vérifiez le résultat
Consultez le résultat converti dans la zone de sortie, et utilisez Intervertir entrée/sortie pour enchaîner une conversion inverse si besoin.
- 4
Copiez le résultat
Appuyez sur Copier la sortie pour récupérer le texte encodé ou décodé, ou sur Tout effacer pour réinitialiser les champs.
Encodage HTML : échapper les caractères spéciaux en toute sécurité
Ce que signifie l'encodage HTML
L'encodage HTML, aussi appelé échappement HTML, convertit les caractères qui ont une signification spéciale en HTML en références de caractères, afin qu'un navigateur les affiche comme du texte littéral au lieu de les interpréter comme du balisage. Le navigateur lit un < brut comme le début d'une balise ; pour afficher un véritable signe inférieur sur la page, vous devez donc écrire la référence < à la place. L'encodage est la traduction sûre entre ce que vous voulez montrer et ce que le navigateur exécuterait autrement.
Il n'y a qu'une poignée de caractères qui ont vraiment besoin d'être échappés dans le HTML de tous les jours, mais les traiter correctement fait toute la différence entre une page qui s'affiche correctement et une page qui casse ou devient vulnérable. Les références existent en deux variantes : les entités nommées comme <, et les références numériques comme < ou <, qui produisent toutes le même caractère visible.
Les caractères essentiels et leurs entités
Cinq caractères couvrent presque tous les besoins d'échappement. L'esperluette & devient & et doit venir en premier dans toute conversion manuelle, car elle débute chaque entité. Le signe inférieur < devient < et le signe supérieur > devient >, puisque ceux-ci délimitent les balises. Le guillemet double " devient " et le guillemet simple ou apostrophe ' devient ' (ou l'entité nommée ' en HTML5), qui importent à l'intérieur des valeurs d'attribut.
La règle de l'esperluette en premier évite un bug subtil. Si vous remplaciez < par < et n'échappiez les esperluettes qu'ensuite, vous transformeriez votre < fraîchement écrit en &lt; et afficheriez le texte littéral « < » sur la page. Encodez toujours & avant les autres. Cet outil applique automatiquement les conversions dans le bon ordre, vous ne tombez donc jamais dans ce piège.
Exemple détaillé : afficher un extrait de code
Imaginez que vous vouliez qu'une page affiche littéralement le texte <a href="x">Tom & Jerry</a> plutôt que de rendre un lien. Chaque caractère spécial est remplacé par sa référence. Le chevron ouvrant devient <, le fermant devient >, les guillemets doubles autour de l'attribut deviennent " et l'esperluette entre les noms devient &.
Le résultat encodé est <a href="x">Tom & Jerry</a>. Collé dans un fichier HTML, le navigateur imprime le code source d'origine de façon visible à l'écran, exactement comme le ferait un tutoriel ou une page de documentation montrant un balisage d'exemple, au lieu de le transformer en un élément d'ancrage fonctionnel.
Pourquoi l'encodage prévient le XSS
Le cross-site scripting (XSS) est une attaque où un attaquant injecte du HTML ou du JavaScript dans une page via un champ qui sera ensuite affiché à d'autres utilisateurs, comme un commentaire, un nom d'utilisateur ou un terme de recherche. Si un site insère ce texte non fiable dans la page sans l'échapper, une charge utile telle qu'une balise script s'exécute dans le navigateur de la victime avec les privilèges du site, rendant possibles le vol de session et pire encore.
L'encodage neutralise l'attaque à la racine. Lorsque les caractères dangereux sont échappés, un <script>alert(1)</script> injecté est stocké et rendu comme du texte visible inoffensif — <script>alert(1)</script> — plutôt que comme un élément exécutable. La défense la plus fiable de toutes contre cette catégorie de vulnérabilité est d'encoder en HTML chaque fragment de données non fiables exactement à l'endroit où il est inscrit dans la page.
Contenu d'élément contre contexte d'attribut
L'endroit où vous placez les données change quels caractères sont dangereux, et une seule règle d'échappement ne suffit pas pour chaque emplacement. À l'intérieur du contenu d'un élément — le texte entre une balise ouvrante et une balise fermante — les caractères critiques sont <, > et &. À l'intérieur d'une valeur d'attribut, le caractère de guillemet qui délimite l'attribut est celui qui permet à un attaquant de s'échapper de la valeur, de sorte que " et ' doivent y être encodés en plus de l'esperluette.
L'habitude la plus robuste consiste à toujours mettre vos attributs entre guillemets et à encoder le caractère de guillemet correspondant en même temps que < > et &. Un attribut sans guillemets est bien plus difficile à sécuriser, car alors les espaces et bien d'autres caractères peuvent s'échapper de la valeur. Il existe aussi des contextes entièrement distincts — à l'intérieur d'un bloc script, d'un bloc style ou d'un attribut d'URL — où l'échappement HTML seul ne suffit pas et où un encodage propre au contexte est requis à la place.
Encoder contre décoder, et quand faire l'un ou l'autre
L'encodage est la direction vers laquelle vous vous tournez pour générer une sortie : prendre du texte brut et produire un balisage sûr avec l'action Encoder. Le décodage est l'inverse, transformer les entités en leurs caractères littéraux avec l'action Décoder, ce qui est utile lorsque vous avez du source échappé — copié depuis une base de données, un courriel ou un autre outil — et que vous voulez lire ou modifier le texte sous-jacent.
Un flux de travail pratique utilise les deux avec le bouton Échanger. Vous pouvez décoder un extrait stocké en caractères bruts, le modifier, puis ré-encoder la version modifiée pour un affichage sûr, le tout sans rien retaper. Rappelez-vous simplement la règle d'or du timing : encodez au moment de la sortie, pas au moment de l'entrée, car échapper trop tôt peut corrompre des données qui doivent rester brutes dans le stockage.
Erreurs courantes à éviter
L'erreur classique est le double encodage : faire repasser dans l'encodeur un texte déjà échappé, ce qui transforme & en &amp; et montre le littéral « & » à vos utilisateurs. Encodez exactement une fois, et uniquement à la frontière de sortie. Un proche cousin est d'échapper les données à l'entrée de votre base de données puis à nouveau à la sortie, produisant le même résultat brouillé.
Une autre erreur fréquente consiste à supposer que l'échappement HTML protège tous les contextes. Ce n'est pas le cas : il ne protège pas des données placées à l'intérieur d'une chaîne JavaScript, d'une valeur CSS ou d'un href commençant par javascript: ; ceux-ci ont besoin de leurs propres règles d'encodage. Enfin, ne bricolez pas un échappeur partiel qui oublie l'esperluette ou les guillemets d'attribut — les trous sont précisément l'endroit par où les bugs et le XSS se faufilent. Laissez un encodeur complet et correctement ordonné faire le travail.
Questions fréquentes
Quels caractères sont encodés en entités HTML ?
Comment l'encodage aide-t-il à prévenir les attaques XSS ?
Puis-je reconvertir les entités en texte normal ?
À quoi sert le bouton Intervertir ?
Mon entrée est-elle envoyée à un serveur ?
Outils similaires
Continuez avec ces outils pratiques