Entités HTML

Encoder et décoder les caractères et entités spéciaux HTML

Cas d'utilisation

  • Échapper le contenu utilisateur pour un HTML sécurisé — convertir `<script>` en `&lt;script&gt;` avant de l'insérer dans un modèle.
  • Lire la source d'email HTML brut — décoder `&amp;` et `&#x2603;` pour voir ce que le destinataire voit réellement.
  • Construire des extraits sûrs pour CMS — encoder `'` et `"` afin qu'une colonne de base de données ne casse pas un contexte SQL ou HTML.
  • Déboguer les rapports XSS — déséchapper les entrées suspectes pour récupérer la charge utile originale que les outils de sécurité ont signalée.

Quand avez-vous besoin de l'encodage d'entités HTML ?

Lorsque du texte fourni par l'utilisateur est rendu en HTML, des caractères comme `<` et `>` doivent être échappés en tant que `&lt;` et `&gt;` pour éviter d'être interprétés comme des balises. Ignorer cela est la cause principale des vulnérabilités XSS. L'outil encode les cinq caractères HTML non sécurisés principaux ainsi que tout Unicode que vous choisissez d'échapper.

Les entités numériques (`&#38;`, `&#x26;`) fonctionnent dans n'importe quel contexte HTML. Les entités nommées (`&amp;`, `&copy;`) sont plus faciles à lire mais ne fonctionnent que dans HTML — les analyseurs XML ne connaissent pas tous les noms HTML.

Exemples

EntréeRésultat
<script>alert('hi')</script>&lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt;
© 2024 — Wenee&copy; 2024 &mdash; Wenee

Questions fréquemment posées

Quels caractères doivent être encodés ?

Au minimum : `<`, `>`, `&`, `"`, et `'`. Encoder plus (comme tous les non-ASCII) est inoffensif mais alourdit la sortie.

Les entités nommées ou numériques sont-elles meilleures ?

Les nommées (`&amp;`) sont plus lisibles en HTML ; les numériques (`&#38;`) fonctionnent dans HTML et XML. Choisissez numérique pour la sécurité inter-format.

L'encodage d'entités HTML est-il le même que l'encodage d'URL ?

Non — les entités HTML utilisent la syntaxe `&...;` pour les contextes HTML. L'encodage d'URL utilise `%XX` pour les contextes URL. Ils servent des couches différentes.

Cela empêche-t-il les XSS ?

L'encodage du contenu texte dans la sortie HTML empêche le vecteur XSS le plus courant. D'autres contextes (valeurs d'attribut, chaînes JavaScript, CSS) nécessitent leurs propres règles d'échappement.

Mon texte est-il envoyé quelque part ?

Non. L'encodage et le décodage se font entièrement dans votre navigateur.