// Échapper HTML
HTML Entities Encoder / Decoder
Encodez des caractères HTML non sécurisés en entités et décodez les entités en retour en caractères.
Text
Escaped
HTML Entities Encoder / Decoder exemples.
// Déséchapper entités
Questions fréquentes.
Pourquoi échapper le HTML ?
Pour prévenir les attaques XSS et assurer que le contenu s'affiche correctement.
Pourquoi l'échappement HTML est important
Certains caractères ont une signification particulière en HTML : < et > définissent les balises, & initie les entités, et " et ' délimitent les attributs. Lorsque ces caractères apparaissent dans du contenu texte, ils doivent être échappés pour que le navigateur les affiche correctement.
Sans échappement, le navigateur interprète le & dans "Matrikel & Prüfung" comme le début d'une entité et tente de la résoudre. Le résultat est un texte mal représenté ou même invisible.
L'échappement est la première et la plus fondamentale protection contre le Cross-Site Scripting (XSS). Lorsque les entrées utilisateur sont insérées sans échappement dans une page HTML, les attaquants peuvent introduire du code JavaScript arbitraire.
Protection XSS vs. Échappement
L'échappement HTML seul protège contre les attaques XSS simples en convertissant < et > en leurs formes d'entité < et >. Cela fait que le code inséré est affiché comme du texte normal et n'est pas exécuté.
Pour des cas d'utilisation plus complexes, l'échappement ne suffit pas. Des outils comme DOMPurify nettoient l'entrée HTML en profondeur, ne permettant que les balises et attributs autorisés et supprimant le code potentiellement dangereux.
La meilleure stratégie combine les deux approches : les entrées utilisateur sont échappées lors de l'insertion dans des zones HTML, et lors du traitement de HTML riche, une sanitization supplémentaire est effectuée.
Entités nommées vs. numériques
HTML propose deux façons de représenter les caractères spéciaux sous forme d'entités : les entités nommées comme & pour & et < pour <, et les entités numériques comme < pour < et < pour la même valeur en hexadécimal.
Les entités nommées sont plus lisibles et sont préférées lorsqu'elles sont disponibles. Il n'y a qu'un nombre limité d'entités nommées – les plus importantes sont &, <, >, " et '.
Les entités numériques peuvent représenter n'importe quel code de caractères Unicode et sont donc universellement applicables. Pour les caractères sans entité nommée, la variante numérique est la seule option.