HTML Escapen/Unescapen
Wandelt Sonderzeichen wie &, <, >, " und ' in HTML-Entitäten um (escapen) oder wandelt Entitäten zurück in die ursprünglichen Zeichen (unescapen). Nützlich zum Schutz vor XSS und zum Einbetten von Text in HTML.
Wichtige benannte HTML-Entitäten
| Zeichen | Benannte Entität | Numerische Referenz | Beschreibung |
|---|---|---|---|
| & | & | & | Kaufmanns-Und (Symbol für "und") |
| < | < | < | Kleiner-als-Zeichen (identisch mit dem Startzeichen eines HTML-Tags) |
| > | > | > | Größer-als-Zeichen (identisch mit dem Endzeichen eines HTML-Tags) |
| " | " | " | Doppeltes Anführungszeichen (Trennzeichen für Attributwerte) |
| ' | ' | ' | Einfaches Anführungszeichen (Trennzeichen für Attributwerte) |
| |   | Geschütztes Leerzeichen (verhindert einen Zeilenumbruch) | |
| © | © | © | Copyright-Symbol |
| ® | ® | ® | Symbol für eingetragene Marke |
| ™ | ™ | ™ | Markensymbol |
| € | € | € | Eurozeichen |
| ¥ | ¥ | ¥ | Yen-Zeichen |
| ¢ | ¢ | ¢ | Cent-Zeichen |
Tipps
- HTML-Escaping ist die Grundlage der XSS-Prävention (Cross-Site-Scripting). Escapen Sie Benutzereingaben immer, bevor Sie sie in HTML einbetten.
- Das Zeichen
&muss immer zuerst escaped werden. Wenn Sie zuerst andere Zeichen umwandeln, wird das&im neu erzeugten&doppelt escaped. - Beim Einbetten einer Zeichenkette in einen Attributwert ist es sicherer, sowohl
"(doppeltes Anführungszeichen) als auch'(einfaches Anführungszeichen) zu escapen, nicht nur eines davon. - Dieses Tool kann dezimale numerische Referenzen (
&), hexadezimale numerische Referenzen (&) sowie die wichtigsten benannten Entitäten (wie&) unescapen. - Viele Template-Engines (Blade, JSX, Vue usw.) escapen HTML beim Einsetzen von Variablen automatisch. Verwenden Sie jedoch eine Syntax für "rohe HTML-Ausgabe" wie
{!! !!}oder v-html, müssen Sie den Wert selbst escapen.
Häufig gestellte Fragen
<, > und & – sind besonders, weil HTML-Parser sie als Teil der Syntax selbst interpretieren. Werden sie nicht escaped, kann der Browser sie fälschlicherweise als Anfang oder Ende eines Tags auffassen, was zu zerstörtem Layout oder XSS (Einschleusen bösartiger Skripte) führen kann.&, <, >, " und '. Nicht-ASCII-Zeichen wie Emojis oder Texte in anderen Sprachen werden in modernen UTF-8-Umgebungen problemlos direkt angezeigt und müssen daher nicht umgewandelt werden.
Übrigens – Der von SGML geerbte Mechanismus der "Zeichenreferenzen"
Der Ursprung der HTML-Entitäten (Zeichenreferenzen) reicht bis zu SGML (Standard Generalized Markup Language) zurück, dem Vorläufer von HTML. Das 1986 standardisierte SGML verfügte bereits über einen Mechanismus für "Zeichenreferenzen", um das Tag-Trennzeichen < im Fließtext selbst verwenden zu können. HTML übernahm diesen Mechanismus nahezu unverändert, und grundlegende benannte Entitäten wie <, > und & waren bereits in den frühen HTML-Spezifikationen der 1990er-Jahre definiert.
Benannte Entitäten wurden ursprünglich geschätzt, um spezielle Drucksymbole (wie das Copyright-Symbol ©, das Symbol für eingetragene Marken ® und diverse griechische Buchstaben) in reinen ASCII-Umgebungen darzustellen, bevor sich Unicode durchsetzte. Die HTML5-Spezifikation definiert letztlich über 2.000 benannte Entitäten und deckt sogar kleinere Symbole wie Häkchen und Notenzeichen ab.
Heute hat die Verbreitung der UTF-8-Kodierung den Bedarf an Zeichenreferenzen zur Vermeidung von Zeichensalat stark verringert. Drei Zeichen – <, > und & – müssen jedoch aus einem völlig anderen Grund weiterhin escaped werden. Sie haben für HTML-Parser eine besondere syntaktische Bedeutung (Anfang eines Tags, Ende eines Tags und Beginn einer Entität), sodass ein Versäumnis beim Escapen direkt zu zerstörtem Layout oder XSS-Sicherheitslücken führen kann.