HTML-Entity-Kodierer / -Decodierer
Sonderzeichen in HTML-Entitäten (&, <, ©) umwandeln oder Entitäten zurück in lesbaren Text decodieren — beide Richtungen, live.
957 Aufrufe
So funktioniert es
HTML reserviert eine Handvoll Zeichen für seine eigene Syntax: < und > markieren Tags, und & leitet eine Entity-Referenz ein. Tauchen diese Zeichen wörtlich in Inhalten auf, die in eine Seite eingefügt werden — ein Kommentar, ein Benutzername, eine zurückgespiegelte Suchanfrage —, versucht der Browser sie als Markup zu interpretieren, statt sie als Text anzuzeigen. Kodieren wandelt sie in ihre Entity-Form um (<, >, &), sodass sie als reiner Text dargestellt statt interpretiert werden. Decodieren kehrt dies um und verwandelt Entitäten wie & oder ’ zurück in die Zeichen, die sie repräsentieren.
Das ist keine kosmetische Kleinigkeit — es ist eine Sicherheitsmaßnahme. Fügt ein Kommentarfeld Nutzereingaben ohne vorherige Kodierung in das Seiten-HTML ein, kann ein Besucher <script>...</script> eintippen und dieses Skript tatsächlich im Browser jedes anderen Besuchers ausführen lassen: Diese Schwachstellenklasse heißt Cross-Site Scripting (XSS), und das Kodieren nicht vertrauenswürdiger Ausgaben, bevor sie mit HTML in Berührung kommen, ist die Standardverteidigung dagegen. Zum Beispiel wird der Text 5 < 10 & 10 > 5 beim Kodieren zu 5 < 10 & 10 > 5 — das wird korrekt angezeigt und kann nicht mit Markup verwechselt werden.
Was Sie wissen sollten
- Benannte und numerische Entitäten stellen dasselbe Zeichen unterschiedlich dar.
'(benannt) und'(numerisch) bedeuten beide ein einfaches Anführungszeichen, aber benannte Entitäten hängen davon ab, dass der Parser genau diesen Namen kennt — numerische Entitäten (dezimal oder&#xhexadezimal) werden universell unterstützt und sind für maschinell erzeugte Ausgaben die sicherere Wahl. - Kodieren ist nicht die einzige Verteidigungslinie. Es schützt Textinhalte; Attribute, URLs und Inline-JavaScript-Kontexte benötigen eigene Escaping-Regeln, da ein Wert innerhalb von
href="javascript:..."oder innerhalb eines<script>-Blocks nach anderen Regeln geparst wird als normaler Fließtext. - Die Umwandlung erfolgt lokal. Dieses Tool nutzt den eigenen DOM-Parser Ihres Browsers — nichts wird hochgeladen oder protokolliert.
- Nicht jede serverseitige Template-Sprache escaped standardmäßig automatisch. Manche (wie ältere PHP-Ausgaben oder rohe String-Verkettung) verlangen einen expliziten Aufruf einer Escaping-Funktion — das zu vergessen ist eine der häufigsten Ursachen realer XSS-Bugs.
- Manche Entitäten sehen sich optisch fast zum Verwechseln ähnlich. Ein gerades Apostroph (
') und ein typografisches rechtes Anführungszeichen (’) wirken auf dem Bildschirm fast identisch, sind aber unterschiedliche Bytefolgen — ein Unterschied, der in Codebeispielen oder URLs eine Rolle spielt.
Ein konkretes Vorher/Nachher: Ein Kommentarfeld mit dem Inhalt Toller Beitrag! 5 < 10, oder? braucht als reiner Text keine besondere Behandlung, doch sobald er unescaped in eine HTML-Vorlage eingefügt wird, könnte ein böswilliger Besucher stattdessen <img src=x onerror=alert(1)> übermitteln — Kodierung macht daraus harmlosen, sichtbaren Text statt eines ausführenden Bildfehler-Handlers.
Häufig gestellte Fragen
Warum Text kodieren, bevor er in HTML eingefügt wird?
Ein nicht escaptes < oder & im HTML-Inhalt kann als Markup interpretiert werden, das Seitenlayout zerstören oder — weit schlimmer — dazu führen, dass eingeschleuste <script>- oder <img onerror>-Tags tatsächlich ausgeführt werden (Cross-Site Scripting). Die Kodierung zu < und & hält den Text wörtlich und harmlos, unabhängig davon, was ein Nutzer eingegeben hat.
Werden sowohl benannte als auch numerische Entitäten unterstützt?
Ja — beim Decodieren werden sowohl benannte Entitäten (&copy;) als auch numerische verstanden, ob dezimal (&#169;) oder hexadezimal (&#x00A9;). Alle drei stehen für dasselbe ©-Zeichen; das Tool normalisiert jede dieser Formen zurück zum tatsächlichen Zeichen.
Warum eine numerische statt einer benannten Entität verwenden — oder umgekehrt?
Benannte Entitäten (&apos;, &hellip;) sind im Quelltext besser lesbar, verlassen sich aber darauf, dass der Parser genau diesen Namen kennt — bei einigen weniger gebräuchlichen ist die Unterstützung in älteren Tools uneinheitlich. Numerische Entitäten (&#39;, &#8230;) werden von jedem HTML-Parser unabhängig von Alter oder Hersteller universell verstanden, weshalb automatisierte Tools und Sanitizing-Bibliotheken sie oft bevorzugen.
Macht Kodieren allein meine Seite sicher vor XSS?
Es behandelt Textknoten, doch HTML kennt weitere Injection-Kontexte — innerhalb eines Attributwerts, innerhalb einer URL, innerhalb eines <script>- oder <style>-Blocks —, die jeweils eigene Escaping-Regeln brauchen, da der Parser des Browsers je nach Position im Dokument andere Regeln anwendet. Das Entity-Kodieren von Textinhalten ist eine wesentliche Schutzschicht, nicht die gesamte Verteidigung; ein umfassenderer "Sanitizing"-Schritt, der ganze Tags entfernt oder umschreibt, ist ein separates, meinungsstärkeres Werkzeug für den Fall, dass Sie bewusst etwas begrenztes HTML zulassen möchten.
Wird mein Text irgendwohin gesendet?
Nein — die Umwandlung erfolgt sofort in Ihrem Browser mit dem eigenen Parser des DOM; nichts wird hochgeladen, protokolliert oder gespeichert. Das macht es sicher, echte, von Nutzern eingereichte Inhalte zu testen — auch solche, bei denen Sie einen Injection-Versuch vermuten.
Ähnliche Tools
Problem melden
HTML-Entity-Kodierer / -Decodierer
Kommentare
Noch keine Kommentare — schreiben Sie den ersten!