HTML-Encoder / Decoder
Kodieren Sie Text in HTML-Entities oder dekodieren Sie HTML-Entities zurück in Text.
So verwenden Sie HTML-Encoder / Decoder
- 1
Text oder HTML eingeben
Fügen Sie reinen Text, den Sie escapen möchten, oder HTML-Entities, die Sie zurückwandeln möchten, in das Eingabefeld ein.
- 2
Codieren oder Decodieren wählen
Klicken Sie auf „In HTML-Entities codieren“, um Zeichen wie < > & in sichere Entities umzuwandeln, oder auf „HTML-Entities decodieren“, um Entities zurück in lesbare Zeichen zu verwandeln.
- 3
Ausgabe prüfen
Sehen Sie sich das umgewandelte Ergebnis im Ausgabefeld an und verwenden Sie „Eingabe/Ausgabe tauschen“, um bei Bedarf eine Rückumwandlung anzuhängen.
- 4
Ergebnis kopieren
Klicken Sie auf „Ausgabe kopieren“, um den codierten oder decodierten Text zu übernehmen, oder auf „Beides löschen“, um die Felder zurückzusetzen.
HTML-Kodierung: Sonderzeichen sicher maskieren
Was HTML-Kodierung bedeutet
Die HTML-Kodierung, auch HTML-Maskierung genannt, wandelt Zeichen, die in HTML eine besondere Bedeutung haben, in Zeichenreferenzen um, sodass ein Browser sie als wörtlichen Text anzeigt, statt sie als Markup zu interpretieren. Der Browser liest ein rohes < als Anfang eines Tags, daher müssen Sie, um ein tatsächliches Kleiner-als-Zeichen auf der Seite anzuzeigen, stattdessen die Referenz < schreiben. Die Kodierung ist die sichere Übersetzung zwischen dem, was Sie angezeigt haben möchten, und dem, was der Browser andernfalls ausführen würde.
Es gibt nur eine Handvoll Zeichen, die im alltäglichen HTML wirklich maskiert werden müssen, doch sie richtig hinzubekommen ist der Unterschied zwischen einer Seite, die korrekt dargestellt wird, und einer, die kaputtgeht oder verwundbar wird. Die Referenzen gibt es in zwei Geschmacksrichtungen: benannte Entities wie < und numerische Referenzen wie < oder <, die alle dasselbe sichtbare Zeichen erzeugen.
Die wichtigsten Zeichen und ihre Entities
Fünf Zeichen decken nahezu jeden Maskierungsbedarf ab. Das Et-Zeichen & wird zu & und muss bei jeder manuellen Umwandlung zuerst kommen, weil es jede Entity einleitet. Das Kleiner-als-Zeichen < wird zu < und das Größer-als-Zeichen > wird zu >, da diese Tags begrenzen. Das doppelte Anführungszeichen " wird zu " und das einfache Anführungszeichen oder Apostroph ' wird zu ' (oder zum benannten ' in HTML5), die innerhalb von Attributwerten von Bedeutung sind.
Die Regel, das Et-Zeichen zuerst zu behandeln, verhindert einen subtilen Fehler. Würden Sie < durch < ersetzen und erst danach die Et-Zeichen maskieren, verwandelten Sie Ihr frisch geschriebenes < in &lt; und zeigten den wörtlichen Text "<" auf der Seite an. Kodieren Sie & immer vor den anderen. Dieses Werkzeug wendet die Umwandlungen automatisch in der richtigen Reihenfolge an, sodass Sie nie in diese Falle tappen.
Durchgerechnetes Beispiel: einen Code-Schnipsel anzeigen
Stellen Sie sich vor, eine Seite soll wörtlich den Text <a href="x">Tom & Jerry</a> anzeigen, statt einen Link darzustellen. Jedes Sonderzeichen wird durch seine Referenz ersetzt. Die öffnende spitze Klammer wird zu <, die schließende wird zu >, die doppelten Anführungszeichen um das Attribut werden zu " und das Et-Zeichen zwischen den Namen wird zu &.
Das kodierte Ergebnis ist <a href="x">Tom & Jerry</a>. In eine HTML-Datei eingefügt, gibt der Browser den ursprünglichen Quellcode sichtbar auf dem Bildschirm aus, genau so, wie eine Tutorial- oder Dokumentationsseite Beispiel-Markup zeigen würde, statt ihn in ein funktionierendes Anker-Element zu verwandeln.
Warum Kodierung XSS verhindert
Cross-Site-Scripting (XSS) ist ein Angriff, bei dem ein Angreifer über ein Feld, das später anderen Nutzern angezeigt wird, etwa einen Kommentar, einen Benutzernamen oder einen Suchbegriff, HTML oder JavaScript in eine Seite einschleust. Fügt eine Website diesen nicht vertrauenswürdigen Text ohne Maskierung in die Seite ein, wird eine Nutzlast wie ein script-Tag im Browser des Opfers mit den Rechten der Website ausgeführt, was Sitzungsdiebstahl und Schlimmeres ermöglicht.
Die Kodierung entschärft den Angriff an der Wurzel. Wenn die gefährlichen Zeichen maskiert sind, wird ein eingeschleustes <script>alert(1)</script> als harmloser sichtbarer Text gespeichert und dargestellt – <script>alert(1)</script> – statt als ausführbares Element. Die mit Abstand zuverlässigste Verteidigung gegen diese Klasse von Schwachstellen besteht darin, jedes Stück nicht vertrauenswürdiger Daten genau an der Stelle HTML-zu kodieren, an der es in die Seite geschrieben wird.
Elementinhalt versus Attributkontext
Wo Sie Daten platzieren, ändert, welche Zeichen gefährlich sind, und eine einzige Maskierungsregel reicht nicht für jede Stelle. Innerhalb von Elementinhalt – dem Text zwischen einem öffnenden und einem schließenden Tag – sind die kritischen Zeichen <, > und &. Innerhalb eines Attributwerts ist das Anführungszeichen, das das Attribut begrenzt, dasjenige, das es einem Angreifer erlaubt, aus dem Wert auszubrechen, sodass dort " und ' zusätzlich zum Et-Zeichen kodiert werden müssen.
Die robusteste Gewohnheit ist, Ihre Attribute stets in Anführungszeichen zu setzen und das passende Anführungszeichen zusammen mit < > und & zu kodieren. Ein Attribut ohne Anführungszeichen ist weit schwerer abzusichern, denn dann können Leerzeichen und viele andere Zeichen aus dem Wert ausbrechen. Es gibt zudem gänzlich eigene Kontexte – innerhalb eines script-Blocks, eines style-Blocks oder eines URL-Attributs –, in denen HTML-Maskierung allein nicht ausreicht und stattdessen eine kontextspezifische Kodierung erforderlich ist.
Kodieren versus Dekodieren und wann man was tut
Das Kodieren ist die Richtung, zu der Sie beim Erzeugen von Ausgabe greifen: rohen Text nehmen und mit der Kodieren-Aktion sicheres Markup erzeugen. Das Dekodieren ist die Umkehrung, das Zurückverwandeln von Entities in ihre wörtlichen Zeichen mit der Dekodieren-Aktion, was nützlich ist, wenn Sie maskierten Quelltext haben – aus einer Datenbank, einer E-Mail oder einem anderen Werkzeug kopiert – und den zugrunde liegenden Text lesen oder bearbeiten möchten.
Ein praktischer Arbeitsablauf nutzt beides mit der Tauschen-Schaltfläche. Sie könnten einen gespeicherten Schnipsel in reine Zeichen dekodieren, ihn bearbeiten und dann die bearbeitete Version für die sichere Anzeige erneut kodieren, alles ohne Neutippen. Denken Sie nur an die goldene Regel des Zeitpunkts: Kodieren Sie im Moment der Ausgabe, nicht im Moment der Eingabe, denn zu frühes Maskieren kann Daten beschädigen, die im Speicher roh bleiben müssen.
Häufige Fehler, die es zu vermeiden gilt
Der klassische Fehler ist die Doppelkodierung: bereits maskierten Text erneut durch den Kodierer zu schicken, was & in &amp; verwandelt und Ihren Nutzern den wörtlichen Text "&" anzeigt. Kodieren Sie genau einmal, und nur an der Ausgabegrenze. Ein naher Verwandter ist das Maskieren von Daten auf dem Weg in Ihre Datenbank und erneut auf dem Weg hinaus, was dasselbe verstümmelte Ergebnis erzeugt.
Ein weiterer häufiger Fehler ist die Annahme, HTML-Maskierung schütze jeden Kontext. Sie schützt keine Daten, die innerhalb einer JavaScript-Zeichenkette, eines CSS-Werts oder eines href platziert werden, das mit javascript: beginnt; diese benötigen ihre eigenen Kodierungsregeln. Bauen Sie schließlich keinen unvollständigen Maskierer von Hand, der das Et-Zeichen oder die Attribut-Anführungszeichen vergisst – die Lücken sind genau dort, wo Fehler und XSS durchschlüpfen. Überlassen Sie die Arbeit einem vollständigen, korrekt geordneten Kodierer.
Häufig gestellte Fragen
Welche Zeichen werden in HTML-Entities codiert?
Wie hilft das Codieren, XSS zu verhindern?
Kann ich Entities wieder in normalen Text umwandeln?
Wofür ist die Schaltfläche „Tauschen“ da?
Wird meine Eingabe an einen Server gesendet?
Verwandte Tools
Machen Sie weiter mit diesen praktischen Tools