HTML-Sanitizer

Der HTML-Sanitizer bereinigt HTML gegen XSS: Er entfernt Skripte, Event-Handler und gefährliche Links nach einer Allowlist und zeigt jede Änderung und eine sichere Vorschau.

HTML-Eingabe
Bereinigtes HTML
Entfernt und geändert
    Vorschau (abgeschottet, ohne Skripte und ohne Nachladen)

    Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

    HTML bereinigen mit Allowlist

    Der HTML-Sanitizer entfernt aus HTML alles, was Skripte ausführen oder Nutzer auf gefährliche Ziele lenken kann. Das ist der Kern, wenn Sie XSS verhindern wollen, also Cross-Site-Scripting über Inhalte, die Nutzer selbst eingeben: Kommentare, Profiltexte oder E-Mails, die Sie als HTML anzeigen. Das Werkzeug liest die Eingabe mit dem DOMParser des Browsers in ein inaktives Dokument ein, in dem nichts ausgeführt und nichts geladen wird, und baut daraus nur die erlaubten Teile wieder auf.

    Grundlage ist eine Allowlist statt einer Sperrliste: Nur ausdrücklich erlaubte Elemente und Attribute bleiben stehen. Gefährliche Tags entfernen heißt hier: script, style, iframe, object, embed, form, svg, math und ähnliche verschwinden samt Inhalt. Unbekannte Elemente wie font oder center werden aufgelöst, ihr Text bleibt erhalten. Event-Handler wie onclick oder onerror fliegen immer raus. In href und src sind nur http, https, mailto und tel sowie relative Adressen erlaubt, damit javascript:-Links auch in verschleierter Form nicht durchkommen. Zum Schluss prüft das Werkzeug, ob das Ergebnis beim erneuten Einlesen gleich bleibt, und warnt sonst.

    Grenzen: Dieses Werkzeug zeigt, wie Bereinigung funktioniert, und hilft beim Prüfen einzelner Schnipsel. In Ihrer Anwendung sollten Sie eine gepflegte Bibliothek wie DOMPurify im Browser oder den Sanitizer Ihres Frameworks auf dem Server einsetzen und zusätzlich eine Content-Security-Policy setzen, etwa mit dem CSP-Generator. Wenn Sie Text nur anzeigen und gar kein HTML zulassen wollen, genügt Escaping, siehe HTML-Entities.

    Anleitung: HTML-Sanitizer in 4 Schritten

    1. Unter „Erlaubte Elemente (Allowlist)“ wählen: Text mit Formatierung und Links, Erweitert mit Bildern und Tabellen oder nur reiner Text.
    2. Optionen wie class- und style-Attribute behalten, rel="noopener noreferrer" und „Bilder nur mit https: oder data:“ festlegen.
    3. Das HTML in „HTML-Eingabe“ einfügen oder „Beispiel“ laden.
    4. Bereinigtes HTML kopieren und unter „Entfernt und geändert“ sowie in der abgeschotteten Vorschau prüfen, was entfernt wurde.

    Typische Anwendungsfälle

    • Nutzereingaben prüfen: Kommentare oder Profiltexte testen, bevor eine Anwendung sie als HTML anzeigt.
    • XSS verhindern lernen: An Beispielen sehen, wie onerror, javascript:-Links und SVG entfernt werden.
    • HTML-Schnipsel säubern: Kopiertes HTML aus Word oder E-Mails von Skripten, Formularen und unnötigen Attributen befreien.
    • Regeln für die eigene Allowlist festlegen: Ausprobieren, welche Elemente für einen Editor wirklich nötig sind.
    Fragen

    Häufige Fragen

    Was macht ein HTML-Sanitizer?

    Er nimmt beliebiges HTML und gibt nur den Teil zurück, der keine Skripte ausführen kann: erlaubte Elemente, erlaubte Attribute und sichere Adressen. Alles andere wird entfernt oder in reinen Text aufgelöst.

    Reicht es, script-Tags zu entfernen?

    Nein. Skripte laufen auch über Event-Handler wie onerror an Bildern, über javascript:-Adressen in Links, über SVG und über eingebettete Objekte. Deshalb arbeitet ein Sanitizer mit einer Allowlist und nicht mit einer Liste verbotener Tags.

    Warum wird nach dem Bereinigen noch einmal geprüft?

    Bei manchen Konstruktionen ändert der Browser das HTML beim erneuten Einlesen, man spricht von Mutation-XSS. Bleibt das Ergebnis beim zweiten Durchlauf gleich, ist das ein gutes Zeichen. Weicht es ab, zeigt das Werkzeug eine Warnung.

    Kann ich den Code in meiner Anwendung verwenden?

    Für den Produktivbetrieb empfehlen wir eine gepflegte Bibliothek wie DOMPurify oder den Sanitizer Ihres Frameworks, die laufend gegen neue Umgehungen getestet werden. Ergänzen Sie immer eine Content-Security-Policy.

    Wird die Vorschau sicher angezeigt?

    Ja. Die Vorschau steht in einem abgeschotteten iframe ohne Skriptrechte und mit einer Richtlinie, die das Nachladen von Bildern und Dateien von fremden Servern verhindert.

    Was ist der Unterschied zwischen Escaping und Sanitizing?

    Escaping wandelt Zeichen wie < und > in Entities um, sodass HTML nur als Text erscheint. Sanitizing lässt erlaubte Formatierungen stehen und entfernt nur gefährliche Teile; es ist nötig, wenn Nutzer tatsächlich HTML eingeben dürfen.

    Wie setze ich DOMPurify in JavaScript ein?

    Nach dem Einbinden der Bibliothek liefert DOMPurify.sanitize(html) das bereinigte HTML, das Sie danach per innerHTML einsetzen. Welche Elemente erlaubt sind, lässt sich über Optionen wie ALLOWED_TAGS anpassen.

    Weitere Werkzeuge

    Das könnte auch helfen

    Alle 358 Werkzeuge