T

Text Machine

Des outils de texte puissants, dans votre navigateur

Encodeur / Décodeur HTML

Encodez du texte en entités HTML ou décodez des entités HTML en texte.

Texte d'Entrée

Comment utiliser Encodeur / Décodeur HTML

  1. 1

    Saisissez votre texte ou HTML

    Collez le texte brut à échapper, ou les entités HTML à reconvertir, dans la zone de saisie.

  2. 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. 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. 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 &lt; à 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 &lt;, et les références numériques comme &#60; ou &#x3C;, 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 &amp; et doit venir en premier dans toute conversion manuelle, car elle débute chaque entité. Le signe inférieur < devient &lt; et le signe supérieur > devient &gt;, puisque ceux-ci délimitent les balises. Le guillemet double " devient &quot; et le guillemet simple ou apostrophe ' devient &#39; (ou l'entité nommée &apos; 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 &lt; et n'échappiez les esperluettes qu'ensuite, vous transformeriez votre &lt; fraîchement écrit en &amp;lt; et afficheriez le texte littéral « &lt; » 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 &lt;, le fermant devient &gt;, les guillemets doubles autour de l'attribut deviennent &quot; et l'esperluette entre les noms devient &amp;.

Le résultat encodé est &lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&lt;/a&gt;. 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 — &lt;script&gt;alert(1)&lt;/script&gt; — 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 &amp; en &amp;amp; et montre le littéral « &amp; » à 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 ?
Les caractères réservés et spéciaux comme < (&lt;), > (&gt;), & (&amp;) et les guillemets sont remplacés par leurs entités HTML nommées ou numériques. Cela permet d'afficher les caractères littéralement sur une page au lieu que le navigateur les interprète comme du balisage.
Comment l'encodage aide-t-il à prévenir les attaques XSS ?
En convertissant des caractères comme < et > en entités, tout balisage ou balise de script fourni par l'utilisateur s'affiche en texte visible plutôt que d'être exécuté. Encoder les entrées non fiables avant de les insérer dans une page est une défense essentielle contre le cross-site scripting (XSS).
Puis-je reconvertir les entités en texte normal ?
Oui. Le bouton Décoder les entités HTML inverse le processus, transformant des entités comme &amp; et &#39; en caractères & et ' d'origine pour que vous puissiez lire ou réutiliser le texte brut.
À quoi sert le bouton Intervertir ?
Intervertir entrée/sortie déplace votre résultat actuel dans le champ de saisie, ce qui est pratique pour faire des allers-retours, par exemple décoder un extrait puis réencoder la version modifiée sans la retaper.
Mon entrée est-elle envoyée à un serveur ?
Non. L'encodage et le décodage s'exécutent entièrement dans votre navigateur : votre texte et tout HTML sensible ne quittent jamais votre appareil. L'outil est gratuit et ne nécessite aucune inscription.

Outils similaires

Continuez avec ces outils pratiques

URL Encoder / Decoder

Encoder / Décoder Base64

Convertisseur HTML vers Texte

Formateur JSON

Testeur de Regex

Décodeur de JWT