& < > " '. Extendu codifie en outre tous les caractères non-ASCII. Choisis entre des entités avec nom (&), des décimales (&) ou des hexadécimales (&).Comment ça marche
Les entités HTML représentent des caractères qui ont une signification spéciale dans le balisage (< > & " ') ou qui ne sont pas ASCII, au moyen de séquences comme <, & ou ©. Ainsi, le navigateur les affiche comme du texte au lieu de les interpréter comme du code.
Il existe trois formats équivalents : nommé (©), décimal (©) et hexadécimal (©). Les trois produisent le même caractère ; le nommé est plus lisible mais n'existe que pour un ensemble connu.
La portée « essentielle » n'échappe que les caractères qui cassent le HTML (& < > " ') ; la portée « tous » échappe en plus tout caractère non ASCII.
Exemples
<a href="#"><a href="#">L'échappement empêche le navigateur d'interpréter les balises et les affiche comme du texte.5 < 10 & 3 > 15 < 10 & 3 > 1© 2024 · €© 2024 · €Avec la portée « tous » et le format nommé. En décimal, ce serait © et € ; en hexadécimal, © et €.Cas d'usage
- Afficher du code HTML comme du texte sur une page (exemples, documentation) sans qu'il soit rendu.
- Échapper l'entrée de l'utilisateur avant de l'insérer dans le HTML pour prévenir le XSS.
- Insérer des symboles spéciaux (©, €, →, ½) de manière portable entre encodages.
- Décoder du texte avec des entités copié depuis le code source d'une page.
Questions fréquentes
Quel format est le meilleur : nommé, décimal ou hexadécimal ?
Le nommé (©) est le plus lisible, mais ne couvre que les caractères ayant un nom défini. Le décimal (©) et l'hexadécimal (©) fonctionnent pour tout caractère Unicode, ils sont donc l'option sûre pour les symboles peu courants.
Encoder les entités empêche-t-il les attaques XSS ?
C'est une part importante, mais l'échappement doit se faire selon le contexte (contenu HTML, attribut, JavaScript ou URL). Ne vous fiez pas à une seule couche : utilisez aussi les protections du framework.
Quels sont les caractères qu'il faut toujours échapper ?
& < et > dans le contenu, et en plus " et ' à l'intérieur des valeurs d'attributs. La portée « essentielle » couvre exactement cet ensemble.
Mon texte est-il envoyé à un serveur ?
Non. L'encodage et le décodage se font entièrement dans votre navigateur.