Tous les articles

HTML Entities : afficher des caractères spéciaux en toute sécurité

En HTML, les caractères <, > et & ont une signification particulière et doivent être échappés, mais la typographie française impose ses propres règles — les guillemets français ne sont pas de simples doubles guillemets droits, et l'espace qui les entoure fait partie de la règle elle-même.

Les guillemets « français » et l'espace insécable fine

La typographie française utilise des guillemets angulaires — &laquo; et &raquo; (« ») — et non les guillemets droits " utilisés en anglais. La règle typographique complète va plus loin : chaque guillemet doit être séparé du texte par une espace fine insécable (&#8239;), pour éviter qu'un guillemet ne se retrouve isolé en début ou fin de ligne lors d'un retour à la ligne automatique.

L'apostrophe typographique contre l'apostrophe droite

Dans un mot comme "l'école", la typographie française soignée utilise l'apostrophe courbe &rsquo; (’) plutôt que l'apostrophe droite ' héritée des machines à écrire. La différence est subtile à l'écran, mais les logiciels d'édition professionnels (et les moteurs de recherche internes) la traitent parfois différemment lors des comparaisons de chaînes.

Entités nommées et numériques

Une entité HTML peut s'écrire de deux façons : avec un code nommé (&lt;, &amp;, &quot;) ou numérique (&#60;, &#38;, ou en hexadécimal &#x3C;). Le navigateur les affiche de la même façon dans les deux cas.

L'ensemble minimal de caractères à échapper

  • <&lt; — pour qu'une balise ne commence pas.
  • >&gt; — pour fermer correctement le texte après une balise.
  • &&amp; — pour que le & ne soit pas lu comme le début d'une autre entité.
  • " et '&quot;, &#39; — obligatoire à l'intérieur d'attributs entre guillemets.

Le lien avec les failles XSS

La plupart des failles XSS surviennent justement parce qu'un texte saisi par l'utilisateur est inséré dans du HTML sans être échappé. Afficher « <script>...</script> » sans le convertir en entités, et le navigateur l'exécutera comme du code. L'échappement est une protection de base — mais pas la seule.

Le contexte compte : texte contre attribut

Échapper <, > et & suffit pour du texte entre des balises, mais à l'intérieur d'un attribut entre guillemets, il faut en plus échapper le type de guillemet précis utilisé — doubles ou simples. Si l'attribut est délimité par des guillemets doubles et que la valeur contient un guillemet double non échappé, le balisage se « rompt » plus tôt que prévu.

Essayer l'outil