Skip to main content
CheckTown
Convertisseurs

Encodage d'entités HTML : Prévenez les XSS et affichez les caractères spéciaux

Publié le 5 min de lecture
Dans cet article

Que sont les entités HTML ?

Les entités HTML sont des codes spéciaux qui représentent des caractères ayant une signification particulière en HTML ou qui ne peuvent pas être saisis directement. Par exemple, &lt; est l'entité HTML pour le caractère < (signe inférieur à), qui serait autrement interprété comme le début d'une balise HTML.

Les entités peuvent être nommées (&lt;, &amp;, &copy;) ou numériques (&#60;, &#38;). Les entités nommées sont plus lisibles ; les entités numériques fonctionnent pour tout caractère Unicode, même sans entité nommée spécifique.

Comment fonctionne l'encodage d'entités HTML

L'encodeur analyse le texte pour identifier les caractères nécessitant un échappement et les remplace par leurs équivalents en entités.

  • Échappement critique — < > & " ' sont toujours échappés pour prévenir l'injection HTML et les attaques XSS
  • Échappement étendu — encode optionnellement tous les caractères non-ASCII en entités numériques
  • Mode décodage — convertit le HTML encodé en entités en texte brut pour inspection

Essayez gratuitement — sans inscription

Encoder des entités HTML →

Quand utiliser l'encodage d'entités HTML

L'encodage d'entités HTML est essentiel pour la sécurité et l'affichage correct des caractères spéciaux dans les pages web.

  • Affichage de contenu utilisateur — encodez toujours le contenu généré par les utilisateurs avant de le rendre en HTML pour prévenir les attaques XSS
  • Templates d'e-mail — encodez les caractères spéciaux dans les templates HTML d'e-mail pour garantir un rendu correct
  • Documentation — échappez les exemples de code dans la documentation HTML pour que les chevrons s'affichent correctement

Questions fréquentes

Qu'est-ce que XSS et comment l'encodage d'entités le prévient-il ?

Le Cross-Site Scripting (XSS) est une attaque où des scripts malveillants sont injectés dans des pages web consultées par d'autres utilisateurs. Si un utilisateur soumet <script>alert('xss')</script> et que cela est rendu en HTML, le script s'exécute. L'encodage d'entités convertit < en &lt;, le faisant s'afficher comme du texte et empêchant l'exécution du script.

Quand utiliser &amp; plutôt que & en HTML ?

Dans les attributs et le contenu HTML, & doit être encodé en &amp; dès qu'il ne fait pas partie d'une entité HTML. Un & non encodé en HTML est une erreur d'analyse. Dans les URL au sein des attributs href, & doit également être encodé en &amp; pour être du HTML valide (bien que les navigateurs soient tolérants à ce sujet).

L'encodage d'entités HTML protège-t-il contre l'injection SQL ?

Non. L'encodage d'entités HTML protège uniquement contre l'injection HTML (XSS). Pour prévenir l'injection SQL, utilisez des requêtes paramétrées ou des instructions préparées dans votre couche base de données. Ce sont des vecteurs d'attaque distincts nécessitant des défenses différentes — ne comptez jamais sur l'encodage HTML pour prévenir l'injection SQL.

Outils associés