Échapper/Déséchapper le HTML

Convertit les caractères spéciaux comme &, <, >, " et ' en entités HTML (échapper), ou reconvertit les entités en leurs caractères d'origine (déséchapper). Utile pour la prévention des attaques XSS et l'insertion de texte dans du HTML.

Principales entités HTML nommées

Caractère Entité nommée Référence numérique Description
& &amp; &#38; Esperluette (symbole signifiant "et")
< &lt; &#60; Signe inférieur à (identique au caractère d'ouverture d'une balise HTML)
> &gt; &#62; Signe supérieur à (identique au caractère de fermeture d'une balise HTML)
" &quot; &#34; Guillemet double (délimiteur de valeurs d'attribut)
' &apos; &#39; Guillemet simple (délimiteur de valeurs d'attribut)
  &nbsp; &#160; Espace insécable (un espace qui empêche le retour à la ligne)
© &copy; &#169; Symbole du copyright
® &reg; &#174; Symbole de marque déposée
&trade; &#8482; Symbole de marque commerciale
&euro; &#8364; Symbole de l'euro
¥ &yen; &#165; Symbole du yen
¢ &cent; &#162; Symbole du cent

Astuces

  • L'échappement HTML est la base de la prévention des attaques XSS (cross-site scripting). Échappez toujours les entrées utilisateur avant de les insérer dans du HTML.
  • Le caractère & doit toujours être échappé en premier. Si vous convertissez d'autres caractères avant lui, le & présent dans le &amp; nouvellement généré sera échappé deux fois.
  • Lorsque vous insérez une chaîne dans une valeur d'attribut, il est plus sûr d'échapper à la fois " (guillemet double) et ' (guillemet simple), pas seulement l'un des deux.
  • Cet outil permet de déséchapper les références numériques décimales (&#38;), les références numériques hexadécimales (&#x26;) ainsi que les principales entités nommées (comme &amp;).
  • De nombreux moteurs de templates (Blade, JSX, Vue, etc.) échappent automatiquement le HTML lors de l'interpolation de variables, mais si vous utilisez une syntaxe de "sortie HTML brute" comme {!! !!} ou v-html, vous devrez échapper la valeur vous-même.

Questions fréquentes

Ces trois caractères — &lt;, &gt; et &amp; — sont particuliers car les analyseurs HTML les interprètent comme faisant partie de la syntaxe elle-même. S'ils ne sont pas échappés, le navigateur peut les confondre avec le début ou la fin d'une balise, ce qui peut entraîner une mise en page cassée ou une attaque XSS (injection de scripts malveillants).

L'encodage d'URL (percent-encoding) convertit les caractères spéciaux pour les représenter en toute sécurité dans une URL, tandis que l'échappement HTML évite que des caractères soient confondus avec des balises dans un document. Comme ces deux usages diffèrent, si la valeur d'un formulaire sert à la fois de paramètre d'URL et d'affichage en HTML, il peut être nécessaire d'appliquer les deux conversions.

Non. Toute la conversion s'effectue entièrement dans votre navigateur grâce à JavaScript, et le texte que vous saisissez n'est jamais envoyé aux serveurs de toolbase.cc.

Non. Cet outil n'échappe que cinq caractères : &, <, >, " et '. Les caractères non ASCII, comme les emojis ou les textes dans d'autres langues, s'affichent en toute sécurité tels quels dans les environnements UTF-8 modernes, et n'ont donc pas besoin d'être convertis.
ツールくん

Anecdote — Le mécanisme de "référence de caractères" hérité du SGML

L'origine des entités HTML (références de caractères) remonte au SGML (Standard Generalized Markup Language), l'ancêtre du HTML. Le SGML, normalisé en 1986, disposait déjà d'un mécanisme de "référence de caractère" permettant d'utiliser le caractère délimiteur de balise < au sein même du texte. Le HTML a hérité de ce mécanisme presque sans modification, et des entités nommées de base telles que &lt;, &gt; et &amp; étaient déjà définies dans les toutes premières spécifications du HTML, dès les années 1990.

Les entités nommées ont d'abord été appréciées comme moyen d'afficher des symboles d'imprimerie spéciaux (comme le symbole du copyright &copy;, celui de la marque déposée &reg; et diverses lettres grecques) dans des environnements ASCII, avant que l'Unicode ne se généralise. La spécification HTML5 a fini par définir plus de 2 000 entités nommées, couvrant même des symboles mineurs comme les coches ou les notes de musique.

Aujourd'hui, la diffusion de l'encodage UTF-8 a considérablement réduit le besoin de références de caractères pour éviter les problèmes d'affichage. Cependant, trois caractères — <, > et & — doivent encore être échappés pour une tout autre raison. Ils revêtent une signification syntaxique particulière pour les analyseurs HTML (début de balise, fin de balise et début d'entité), si bien qu'un oubli d'échappement peut directement provoquer une mise en page cassée ou une faille XSS.