WMP Sites

Sanitize HTML: Schutz Ihres Codes vor schädlichen Eingaben

Lukas Fuchs vor 2 Jahren Frontend 3 Min. Lesezeit

Was ist Sanitizing von HTML und warum ist es wichtig?

Sanitizing von HTML ist ein entscheidender Prozess zum Schutz deiner Webanwendungen vor schädlichen Eingaben. Es handelt sich dabei um das Entfernen oder Entschärfen bösartiger Code-Teile aus dem HTML-Code, den du von Benutzern empfängst.

Warum ist HTML-Sanierung wichtig?

Die Sanierung von HTML ist wichtig, weil unsicherer HTML-Code eine erhebliche Sicherheitsbedrohung für deine Anwendung darstellen kann. Angreifer können bösartigen Code in HTML-Eingaben einfügen, um:

  • Cross-Site Scripting (XSS)-Angriffe: Ausführung von JavaScript-Code in deinem Browser und Zugriff auf sensible Daten wie Cookies und Sitzungsinformationen.
  • SQL-Injection-Angriffe: Manipulation von Datenbankabfragen, um auf vertrauliche Informationen zuzugreifen oder Daten zu ändern.
  • CSRF-Angriffe (Cross-Site Request Forgery): Ausführen von Aktionen auf deiner Website im Namen eines anderen Benutzers.

Ziel der HTML-Sanierung

Das Ziel der HTML-Sanierung besteht darin, sicherzustellen, dass der HTML-Code, den du empfängst, frei von bösartigem Inhalt ist und keine Sicherheitsrisiken für deine Anwendung darstellt. Dazu werden unter anderem folgende Maßnahmen ergriffen:

  • Entfernen ungültiger HTML-Tags und Attribute
  • Entschärfen von potenziell gefährlichen Zeichenfolgen
  • Bereinigen von CSS-Styles, die zur Umgehung von Sicherheitsmaßnahmen genutzt werden können

Wie man HTML saniert

Um HTML erfolgreich zu sanieren, musst du die folgenden Schritte ausführen:

Identifiziere die Eingabequellen

Der erste Schritt besteht darin, alle Eingabequellen zu identifizieren, die möglicherweise unsicheres HTML enthalten. Dies können Formulare, APIs oder sogar direkt eingefügte Inhalte sein.

Bereinige die Eingabe

Sobald du die Eingabequellen identifiziert hast, musst du die Eingabe bereinigen, um schädliche Elemente zu entfernen. Dies kann durch die Verwendung von Regulären Ausdrücken oder dedizierten Sanierungsbibliotheken erfolgen.

Validieren der Eingabe

Nachdem du die Eingabe bereinigt hast, musst du sie validieren, um sicherzustellen, dass sie dem erwarteten Format entspricht und keine schädlichen Elemente mehr enthält.

Implementiere Whitelists und Blacklists

Whitelists erlauben nur bestimmte vertrauenswürdige Tags und Attribute, während Blacklists explizit bekannte schädliche Elemente blockieren.

Codiere die Ausgabe

Um die Ausgabe vor Cross-Site-Scripting-Angriffen zu schützen, musst du alle Sonderzeichen wie <, > und & codieren.

Verwende sichere Sanierungsbibliotheken

Es gibt mehrere sichere Sanierungsbibliotheken wie HTMLPurifier, OWASP AntiSamy und DOMPurify, die dir dabei helfen, HTML sicher zu sanieren.

Verwende einen WAF (Web Application Firewall)

Ein WAF kann eine zusätzliche Schutzschicht bieten, indem er bösartige Anforderungen blockiert, bevor sie deinen Code erreichen.

Verschiedene Techniken zur HTML-Sanierung

Sobald du die Risiken unsicheren HTML verstehst, ist es an der Zeit, die verschiedenen Techniken zu erkunden, die du zur Sanierung einsetzen kannst.

Bibliotheken von Drittanbietern

Die Verwendung dedizierter Bibliotheken von Drittanbietern kann die HTML-Sanierung erheblich vereinfachen. Diese Bibliotheken sind darauf spezialisiert, bösartigen Code zu erkennen und zu entfernen, wodurch du Zeit und Mühe sparst.

  • HTML Purifier: Eine umfassende Bibliothek mit umfassenden Optionen zur HTML-Sanierung.
  • OWASP HTML Sanitizer: Eine von OWASP entwickelte Bibliothek, die Schutz vor häufigen Webangriffen bietet.

Reguläre Ausdrücke

Reguläre Ausdrücke (Regex) können verwendet werden, um schädliche HTML-Tags und Attribute zu identifizieren und zu entfernen. Dies ist jedoch eine komplexere Option, die ein gründliches Verständnis von Regex erfordert.

HTML-Parser

HTML-Parser können verwendet werden, um das HTML-Dokument in einzelne Elemente zu zerlegen. Dies ermöglicht es dir, die Elemente einzeln zu analysieren und zu bestimmen, ob sie sicher sind oder nicht.

  • HTML5Lib: Ein weit verbreiteter HTML-Parser, der eine effiziente und genaue Verarbeitung bietet.
  • LXML: Eine Python-Bibliothek, die eine umfassende HTML-Analyse und -Sanierung ermöglicht.

Whitelisting

Beim Whitelisting werden nur bestimmte zulässige HTML-Tags und Attribute in das Dokument aufgenommen. Dies ist eine strenge Methode, die jedoch maximalen Schutz vor schädlichen Eingaben bietet.

  • Bleach: Eine Python-Bibliothek, die Whitelists für HTML-Tags und -Attribute anbietet.
  • Censorious: Eine einfache und intuitive Whitelisting-Lösung für Ruby.

Blacklisting

Beim Blacklisting werden bestimmte bösartige HTML-Tags und Attribute explizit blockiert. Dies ist eine einfachere Methode, die jedoch möglicherweise nicht alle Sicherheitsbedrohungen abdeckt.

Hinweis: Es ist wichtig zu beachten, dass es keine allgemeingültige "beste" HTML-Sanierungstechnik gibt. Wähle die Methode, die deinen spezifischen Anforderungen und deinem Fachwissen am besten entspricht.

Best Practices für die Sanierung von HTML

Beim Sanitieren von HTML gibt es einige Best Practices, die du befolgen solltest, um die Sicherheit deines Codes zu gewährleisten:

Verwende eine Whitelist anstelle einer Blacklist

Eine Whitelist erlaubt nur bestimmte sichere Tags und Attribute, während eine Blacklist schädliche Tags und Attribute blockiert. Da das Erstellen einer vollständigen Blacklist schwierig sein kann, empfiehlt es sich, eine übersichtliche Whitelist zu verwenden.

Bereinige Benutzerdaten in Echtzeit

Vermeide es, unsanierte Benutzerdaten zu speichern. Reinige Daten, sobald sie eingegeben werden, um zu verhindern, dass schädlicher Code in deine Datenbank gelangt. Erwäge die Verwendung eines WYSIWYG-Editors, der die Eingabe schädlichen HTMLs verhindert.

Verwende einen vertrauenswürdigen Sanitizer

Verwende statt selbst programmierter Bereinigungsfunktionen eine etablierte und vertrauenswürdige Sanitisierungsbibliothek. Es gibt viele Open-Source-Optionen wie HTML Purifier und OWASP AntiSamy, die regelmäßig auf Sicherheitsprobleme überprüft werden.

Teste die Sanierung gründlich

Teste deine Sanitisierungsstrategien gründlich, um sicherzustellen, dass sie schädlichen Code effektiv entfernen. Verwende Testfälle mit gängigen Angriffsvektoren und überprüfe die Ergebnisse sorgfältig.

Aktualisiere die Sanitizer regelmäßig

Da sich Webangriffe ständig weiterentwickeln, musst du deine Sanitizer regelmäßig aktualisieren, um mit den neuesten Bedrohungen Schritt zu halten. Verwende Bibliotheken, die von aktiven Entwicklern gepflegt werden, und abonniere Sicherheitshinweise, um über potenzielle Schwachstellen informiert zu bleiben.

Häufige Fehler bei der HTML-Sanierung und wie man sie vermeidet

Beim Sanitieren von HTML können verschiedene Fehler auftreten, die zu Sicherheitslücken führen können. Hier sind einige häufige Fehler und Tipps, um sie zu vermeiden:

Nicht alle HTML-Tags sanieren

<div>Ungesäuberter HTML-Code</div>

Fehler: Möglicherweise sanierst du nur einen Teil des HTML-Codes, wodurch ungeprüfter Code zurückbleibt, der für Angriffe ausgenutzt werden kann.

Lösung: Saniere immer den gesamten HTML-Code, einschließlich Tags, Attribute und Inhalte.

Sanierung zu permissive Regeln verwenden

<div onclick="alert('XSS');">Klicke hier</div>

Fehler: Du kannst Regeln verwenden, die zu permissive sind und bösartige Eingaben zulassen.

Lösung: Verwende strenge Sanierungsregeln, die schädliche Eingaben effektiv blockieren. Erwäge die Verwendung einer Bibliothek oder eines Tools wie OWASP AntiSamy oder HTML Purifier.

XSS-Angriffe nicht berücksichtigen

<div>{{ username }}</div>

Fehler: Du kannst vergessen, XSS-Angriffe zu berücksichtigen, bei denen Angreifer skriptive Eingaben einfügen können, die auf deiner Website ausgeführt werden.

Lösung: Saniere Benutzereingaben gründlich, um XSS-Angriffe zu verhindern. Verwende beispielsweise eine XSS-Schutzbibliothek wie OWASP ESAPI oder Google Caja.

Nicht mit mehrfach verschachteltem HTML rechnen

<div>
  <p>
    <a href="http://example.com">
      <img src="http://attacker.com/evil.png">
    </a>
  </p>
</div>

Fehler: Du kannst verschachtelten HTML-Code nicht richtig sanieren, was zu Schwachstellen führen kann.

Lösung: Verwende rekursive Sanierungsalgorithmen, die verschachtelten HTML-Code effektiv handhaben können.

Fehlerhafte Implementierung der Sanierung

$sanierter_html = htmlspecialchars($unsanierter_html);

Fehler: Du kannst die Sanierungsfunktionen möglicherweise nicht korrekt implementieren, wodurch ungesäuberter HTML-Code zurückbleibt.

Lösung: Folge den Anweisungen der Sanierungsbibliothek oder des Tools sorgfältig und teste die Implementierung gründlich auf Sicherheit.

Ressourcen und Tools zur HTML-Sanierung

Um dir die HTML-Sanierung zu erleichtern, stehen dir sowohl Online-Tools als auch Bibliotheken zur Verfügung:

Online-Tools

Bibliotheken

Sonstige Ressourcen

Auswahl des richtigen Tools

Bei der Auswahl eines Tools oder einer Bibliothek für die HTML-Sanierung solltest du Folgendes berücksichtigen:

  • Sicherheitsfunktionen: Die angebotenen Sicherheitsfunktionen, z. B. Whitelists, Blacklists und Escape-Mechanismen.
  • Zielplattform: Ob das Tool in deiner Technologieumgebung funktioniert (z. B. Client- oder Serverseite).
  • Einfachheit der Verwendung: Die Einfachheit der Integration und Verwendung des Tools in deinem Code.

Fazit: Schutz deines Codes vor schädlichen Eingaben

Durch die Sanierung von HTML kannst du dich vor Sicherheitsrisiken schützen, die durch bösartige Eingaben entstehen. Du hast gelernt, wie man unsicheren Code identifiziert und mit verschiedenen Techniken bereinigt.

Vorteile der HTML-Sanierung

  • Schutz vor XSS-Angriffen: XSS (Cross-Site Scripting) ermöglicht es Angreifern, schädlichen JavaScript-Code auf legitimen Websites auszuführen.
  • Vermeidung von CSRF-Angriffen: CSRF (Cross-Site Request Forgery) ermöglicht es Angreifern, Aktionen in deinem Namen auszuführen, indem sie eine manipulierte HTML-Anfrage senden.
  • Reduzierung von Spam: Spammer können HTML-Inhalte mit unsichtbaren Zeichen oder schädlichen Links verwenden, die von Spamfiltern schwer zu erkennen sind.

Best Practices für die HTML-Sanierung

  • Verwende bewährte Bibliotheken oder Frameworks für die Sanierung, wie z. B. OWASP HTML Sanitizer oder JQuery's Clean() Methode.
  • Saniere alle benutzereingegebenen HTML-Daten, auch wenn sie aus vertrauenswürdigen Quellen stammen.
  • Verwende Whitelists, um nur zulässige HTML-Tags und Attribute zuzulassen.
  • Überwache sanierte Daten auf verdächtige Zeichenfolgen oder Ausdrücke.
  • Aktualisiere deine Sanierungsregeln regelmäßig, um mit den neuesten Sicherheitsbedrohungen Schritt zu halten.

Häufige Fehler bei der HTML-Sanierung

  • Nicht alle Eingaben sanieren: Vergesse nicht, sowohl sichtbare als auch versteckte HTML-Daten zu bereinigen.
  • Falsche Verwendung von Whitelists: Erlaube keine ungesicherten Tags oder Attribute, selbst wenn sie harmlos erscheinen.
  • Unzureichende Überprüfung: Verlasse dich nicht allein auf die Sanierung. Überprüfe sanierte Daten immer noch auf verdächtige Zeichenfolgen.
  • Vernachlässigung von regelmäßigen Updates: Sicherheitsbedrohungen ändern sich ständig. Aktualisiere deine Sanierungsregeln, um auf dem Laufenden zu bleiben.

Ressourcen und Tools

Denke daran, dass die Sanierung von HTML ein wichtiger Bestandteil der Webanwendungssicherheit ist. Durch die Implementierung bewährter Sanierungspraktiken kannst du schädliche Eingaben verhindern und deinen Code vor Sicherheitsrisiken schützen.

Weitere Beiträge

Folge uns

Neue Beiträge

Frontend

LaTeX in HTML umwandeln: Schritt-für-Schritt-Anleitung für sauberen Web-Content

AUTOR • Jul 01, 2026
Frontend

Das Zeichen „&“ als Symbol für Verknüpfung und mehr: Bedeutung, Einsatz und Wirkung

AUTOR • Jul 01, 2026
Frontend

Eingabefeld Typ Zahl mit Dezimalzahlen: So wird's gemacht

AUTOR • Jul 01, 2026
Frontend

HTML h2: Ein Leitfaden zum Erstellen effektiver Überschriften

AUTOR • Jul 01, 2026
Frontend

Der ultimative Leitfaden zur Verwendung von HTML-Schaltflächen für Formulareingaben

AUTOR • Jul 01, 2026
Frontend

SELFHTML: Der ausfuehrliche Leitfaden zum Erstellen und Gestalten von Webseiten

AUTOR • Jul 01, 2026
Frontend

Gefahr beim Öffnen von HTML-Dateien: Vorsichtsmaßnahmen und Risiken klar erklärt

AUTOR • Jul 01, 2026
DevOps & Deployment

Der Crossover: Eine Verschmelzung der Genres für endlose Unterhaltungsmöglichkeiten

AUTOR • Jul 01, 2026
DevOps & Deployment

Schnell und einfach TAR-Archive erstellen und extrahieren: So geht’s ohne Umwege

AUTOR • Jul 01, 2026
DevOps & Deployment

Kernel Version ermitteln: So verstehst du die Bedeutung deiner Linux-Kernel-Version

AUTOR • Jul 01, 2026
DevOps & Deployment

Erstellung eines Linux-Benutzers: Schritt-für-Schritt-Anleitung

AUTOR • Jul 01, 2026
DevOps & Deployment

Der Linux tee Befehl: Effiziente Datenumleitung und Anzeige für meinen Workflow

AUTOR • Jul 01, 2026
DevOps & Deployment

Linux für Windows-Umsteiger: So gelingt der nahtlose Übergang ohne Frust

AUTOR • Jul 01, 2026
DevOps & Deployment

Cura: Die vielseitige Software für den 3D-Druck richtig nutzen

AUTOR • Jul 01, 2026
DevOps & Deployment

So setzen Sie Ubuntu sicher und einfach zurück: die schnelle Schritt-für-Schritt-Anleitung

AUTOR • Jul 01, 2026
DevOps & Deployment

BackBox Linux: Das ultimative OS für Penetrationstester und Sicherheitsforscher

AUTOR • Jul 01, 2026
Frontend

Autokennzeichen FH: Bedeutung, Herkunft und was du darüber wissen musst

AUTOR • Jul 01, 2026
Backend

Autokennzeichen WES: Alles, was du über das Kennzeichen aus Wesel wissen musst

AUTOR • Jul 01, 2026
Frontend

Formatvorlage erstellen in Word: Tipps und Tricks für optimale Dokumentengestaltung

AUTOR • Jul 01, 2026
Datenbanken

Bergmannsche Regel einfach erklärt: Bedeutung, Beispiele und Anwendung

AUTOR • Jul 01, 2026

Beliebte Beiträge

Frontend

Bewährte Texte für Geburtstagskarten: Kreative Ideen und Beispiele

AUTOR • May 12, 2025
Frontend

Global Players Beispiele: Eine tiefgehende Analyse am Beispiel erfolgreicher Unternehmen

AUTOR • May 05, 2025
Frontend

Was ist eine Diplomarbeit? Eine tiefgehende Analyse

AUTOR • Sep 10, 2024
Frontend

Tabellenbeschriftung: Wichtige Aspekte für die richtige Anwendung

AUTOR • Sep 10, 2024
Backend

Eurokennzeichen HR: Alles, was Sie wissen müssen

AUTOR • Jun 18, 2024
DevOps & Deployment

Linux-Skript effizient ausführen: Eine umfassende Anleitung

AUTOR • May 06, 2024
DevOps & Deployment

Sichere Linux-Praktiken für ultimative Sicherheit

AUTOR • May 06, 2024
DevOps & Deployment

So reparieren Sie Linux Mint: Eine umfassende Anleitung

AUTOR • Mar 17, 2026
DevOps & Deployment

Partitionierung unter Linux: Schritt-für-Schritt-Anleitung zum Erstellen und Verwalten von Partitionen

AUTOR • May 06, 2024
DevOps & Deployment

Überprüfung der Portverfügbarkeit unter Linux mit ping

AUTOR • May 06, 2024
DevOps & Deployment

Virtual Private Server (VPS) mit Linux: Die ultimative Lösung für Webhosting

AUTOR • May 06, 2024
DevOps & Deployment

Ubuntu DVD-Ripping: Schritt-für-Schritt-Anleitung zum Extrahieren von Inhalten

AUTOR • May 06, 2024
Frontend

Das Geheimnis hinter der Optimierung Ihres Lebens: Ziele setzen, Gewohnheiten ändern und eine Vision erschaffen

AUTOR • May 06, 2024
Frontend

Das <span>-Element: Text formatieren und Inhalte hervorheben

AUTOR • Apr 24, 2024
Frontend

Drehe Bilder auf deiner Website mit HTML

AUTOR • Apr 24, 2024
Frontend

Was ist DIV in HTML: Der umfassende Leitfaden

AUTOR • Apr 24, 2024
Frontend

Sanitize HTML: Schutz Ihres Codes vor schädlichen Eingaben

AUTOR • Apr 24, 2024
Frontend

HTML-Schieberegler: Die ultimative Anleitung zur Erstellung benutzerfreundlicher Eingaben

AUTOR • Apr 24, 2024
Frontend

Das HTML-lang-Attribut: Bedeutung und Verwendungsrichtlinien für mehrsprachige Websites

AUTOR • Apr 24, 2024
Frontend

Font in HTML: Schriftarten auf Ihrer Website anpassen

AUTOR • Apr 24, 2024