Que sont les entités HTML

HyperText Markup Language, ou HTML, est le langage principal pour les pages Web sur Internet. Il inclut la prise en charge d'un certain nombre d'autres langages qui ajoutent des fonctionnalités et un style supplémentaires tels que JavaScript et CSS. Tous ces langages sont basés sur du texte avec des caractères significatifs utilisés pour séparer les chaînes littérales qui doivent être imprimées dans le navigateur et le code qui doit être interprété et exécuté.

Cette conception présente cependant quelques problèmes, ceux-ci deviennent évidents lorsque vous souhaitez imprimer l'un des caractères significatifs dans le navigateur. Les meilleurs exemples de caractères à utiliser sont les symboles « inférieur à » et « supérieur à ». Ces symboles sont respectivement utilisés pour ouvrir et fermer des segments de code en HTML. La méthode correcte pour imprimer ces caractères à l'écran en toute sécurité consiste à utiliser des entités HTML.

Entités HTML et sécurité

Grâce à ces caractères ayant une signification particulière, vous devez faire très attention à vous assurer de les remplacer par la version de l'entité HTML si vous souhaitez qu'ils soient imprimés dans le navigateur. Malheureusement, de nombreux développeurs Web oublient que les utilisateurs peuvent soumettre des commentaires à de nombreux sites Web. Si cette entrée d'utilisateur comprend des caractères significatifs et qu'ils ne sont pas remplacés par des entités HTML, dans un processus appelé assainissement, alors le site Web présente une vulnérabilité de script intersites (XSS).

Astuce: n'essayez pas de soumettre des caractères spéciaux à des sites Web pour tenter de trouver des vulnérabilités XSS. Cela est techniquement piraté et constitue une infraction pénale, à moins que vous n'ayez l'autorisation du propriétaire du site Web.

Comment les entités HTML fonctionnent (et parfois non)

Les entités HTML fonctionnent car le navigateur sait l'afficher comme le caractère spécial pertinent et ne pas le traiter comme un caractère spécial. Toutes les entités HTML commencent par une esperluette « & » et se terminent par un point-virgule «; ». La plupart des caractères sont identifiés par un numéro d'entité, bien que certains caractères spéciaux aient également un nom abrégé. Par exemple, "&", "" ont les numéros d'entité "&", "" ainsi que les noms d'entité "&", "" respectivement. Le navigateur sait que ces chaînes signifient qu'il doit afficher les caractères pertinents.

Astuce: Une liste complète des noms d'entités de caractères peut être trouvée ici, bien que la prise en charge des noms d'entité varie selon le navigateur.

Dans la plupart des cas, les utilisateurs ne devraient jamais voir que les caractères que représentent les entités HTML. Il est cependant possible de voir des caractères codés, généralement une esperluette « & », grâce à un processus appelé « Double encodage ». Cela se produit lorsque le caractère esperluette apparaît dans sa propre version codée. Le double encodage se produit généralement lorsque l'entrée est correctement encodée, car elle est soumise, cependant, lorsqu'elle est sortie, elle est à nouveau nettoyée. Il en résulte que l'esperluette au début du "&" est encodée une deuxième fois et apparaît sous la forme "&", le navigateur puis interprète correctement cela comme une chaîne qui devrait être imprimée comme « & » ayant décodé l'entité HTML et ignoré le partiel entité.