Entités HTML

Encoder et décoder les entités HTML pour une utilisation sécurisée

Qu'est-ce que c'est et comment ça marche ?

Un encodeur et décodeur d'entités HTML convertit les caractères spéciaux en leur forme d'entité HTML et inversement — transformant < en &lt;, & en &amp;, et les caractères accentués ou symboles en codes nommés ou numériques. Certains caractères ont un sens spécial en HTML : un < brut démarre une balise, et un & brut démarre une entité, donc pour les afficher comme texte littéral sur une page il faut les encoder. L'encodage d'entités est ainsi qu'on met chevrons, esperluettes, guillemets et symboles inhabituels dans du HTML sans que le navigateur les interprète mal comme du balisage.

La raison la plus importante d'encoder est l'exactitude et la sécurité : si vous insérez du texte fourni par l'utilisateur dans une page sans l'encoder, des caractères comme < et > peuvent casser votre mise en page ou, pire, laisser du balisage injecté s'exécuter comme du code. Encoder neutralise cela en transformant les caractères en entités inoffensives qui s'affichent exactement comme tapées. Décoder fait l'inverse — utile quand vous recevez du texte encodé en entités et voulez lire ou traiter les caractères d'origine. Cet outil fait les deux dans votre navigateur, rien de ce que vous collez n'est téléversé.

Cas d'usage

Questions fréquentes

Quels caractères faut-il encoder en HTML ?

Les essentiels sont < (&lt;), > (&gt;), & (&amp;) et, dans les valeurs d'attribut, les guillemets " (&quot;) et ' (&#39;). Ils ont un sens structurel en HTML, les encoder garantit donc qu'ils s'affichent comme texte littéral plutôt que d'être analysés comme du balisage.

Quelle différence entre entités nommées et numériques ?

Les entités nommées utilisent un label lisible (&copy; pour ©), tandis que les numériques utilisent le point de code du caractère (&#169; pour le même ©). Les nommées sont plus faciles à lire mais n'existent que pour certains caractères ; les numériques marchent pour tout caractère, d'où la présence des deux formes.

Pourquoi l'encodage importe-t-il pour la sécurité ?

Insérer du texte utilisateur non encodé dans une page laisse des caractères comme < introduire des balises, ce qui peut exécuter des scripts injectés — un risque de cross-site scripting (XSS). Encoder transforme ces caractères en entités inertes, le texte s'affiche donc sans danger au lieu d'être exécuté comme du balisage.

L'encodage change-t-il l'aspect du texte pour un lecteur ?

Non. Une entité correctement encodée s'affiche comme le caractère exact qu'elle représente — &amp; apparaît comme &, &lt; comme <. Le résultat visible est identique ; encoder ne change que la source sous-jacente pour que le navigateur traite le caractère comme texte plutôt que balisage.

Texte

Majuscules / Minuscules · Compteur de mots · Compteur de caractères · Générateur Lorem Ipsum · Supprimer les espaces · Trier les lignes de texte