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 — « et » (« ») — 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 ( ), 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 ’ (’) 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é (<, &, ") ou numérique (<, &, ou en hexadécimal <). Le navigateur les affiche de la même façon dans les deux cas.
L'ensemble minimal de caractères à échapper
<→<— pour qu'une balise ne commence pas.>→>— pour fermer correctement le texte après une balise.&→&— pour que le & ne soit pas lu comme le début d'une autre entité."et'→",'— 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.