T

Text Machine

Leistungsstarke Text-Tools, direkt in Ihrem Browser

HTML-Encoder / Decoder

Kodieren Sie Text in HTML-Entities oder dekodieren Sie HTML-Entities zurück in Text.

Eingabetext

So verwenden Sie HTML-Encoder / Decoder

  1. 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. 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. 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. 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 &lt; 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 &lt; und numerische Referenzen wie &#60; oder &#x3C;, 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 &amp; und muss bei jeder manuellen Umwandlung zuerst kommen, weil es jede Entity einleitet. Das Kleiner-als-Zeichen < wird zu &lt; und das Größer-als-Zeichen > wird zu &gt;, da diese Tags begrenzen. Das doppelte Anführungszeichen " wird zu &quot; und das einfache Anführungszeichen oder Apostroph ' wird zu &#39; (oder zum benannten &apos; 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 &lt; ersetzen und erst danach die Et-Zeichen maskieren, verwandelten Sie Ihr frisch geschriebenes &lt; in &amp;lt; und zeigten den wörtlichen Text "&lt;" 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 &lt;, die schließende wird zu &gt;, die doppelten Anführungszeichen um das Attribut werden zu &quot; und das Et-Zeichen zwischen den Namen wird zu &amp;.

Das kodierte Ergebnis ist &lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&lt;/a&gt;. 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 – &lt;script&gt;alert(1)&lt;/script&gt; – 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 &amp; in &amp;amp; verwandelt und Ihren Nutzern den wörtlichen Text "&amp;" 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?
Reservierte und Sonderzeichen wie < (&lt;), > (&gt;), & (&amp;) und Anführungszeichen werden durch ihre benannten oder numerischen HTML-Entities ersetzt. So können Sie die Zeichen wörtlich auf einer Seite anzeigen, anstatt dass der Browser sie als Markup interpretiert.
Wie hilft das Codieren, XSS zu verhindern?
Indem Zeichen wie < und > in Entities umgewandelt werden, wird jegliches von Nutzern stammende Markup oder Skript-Tags als sichtbarer Text dargestellt statt ausgeführt. Das Codieren nicht vertrauenswürdiger Eingaben vor dem Einfügen in eine Seite ist eine zentrale Abwehr gegen Cross-Site-Scripting (XSS).
Kann ich Entities wieder in normalen Text umwandeln?
Ja. Die Schaltfläche „HTML-Entities decodieren“ kehrt den Vorgang um und wandelt Entities wie &amp; und &#39; zurück in die ursprünglichen Zeichen & und ', sodass Sie den rohen Text lesen oder wiederverwenden können.
Wofür ist die Schaltfläche „Tauschen“ da?
„Eingabe/Ausgabe tauschen“ verschiebt Ihr aktuelles Ergebnis in das Eingabefeld, was praktisch ist, um Inhalte hin- und herzuwandeln, zum Beispiel einen Schnipsel zu decodieren und dann die bearbeitete Version erneut zu codieren, ohne sie neu einzutippen.
Wird meine Eingabe an einen Server gesendet?
Nein. Das Codieren und Decodieren laufen vollständig in Ihrem Browser, sodass Ihr Text und jegliches sensible HTML Ihr Gerät nie verlassen. Das Tool ist kostenlos und erfordert keine Anmeldung.

Verwandte Tools

Machen Sie weiter mit diesen praktischen Tools

URL Encoder / Decoder

Base64 codieren / decodieren

HTML zu Text Konverter

JSON-Formatierer

Regex-Tester

JWT-Decoder