and it is rendered as HTML, the script executes. Entity encoding converts < to < making it render as text, preventing script execution." } }, { "@type": "Question", "name": "When should I use & versus & in HTML?", "acceptedAnswer": { "@type": "Answer", "text": "In HTML attributes and content, & must be encoded as & whenever it is not part of an HTML entity. Unencoded & in HTML is a parsing error. In URLs within href attributes, & must also be encoded as & to be valid HTML (though browsers are forgiving)." } }, { "@type": "Question", "name": "Does HTML entity encoding protect against SQL injection?", "acceptedAnswer": { "@type": "Answer", "text": "No. HTML entity encoding only protects against HTML injection (XSS). For SQL injection prevention, use parameterized queries or prepared statements in your database layer. These are separate attack vectors requiring different defenses — never rely on HTML encoding to prevent SQL injection." } } ] }
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