So verhindern Sie Webangriffe durch Eingabesäuberung

Eingabesäuberung ist eine wichtige Sicherheitsmaßnahme, die Ihre Website vor Angriffen schützt. Erfahren Sie jetzt mehr.

Written By
Julien Maury
Julien Maury
Feb 6, 2025
8 minute read
eSecurity Planet content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Eingabesäuberung bezeichnet das Verändern oder Entfernen potenziell schädlicher Daten, die von Benutzern eingegeben werden, um webbasierte Angriffe wie SQL-Injection und Cross-Site-Scripting (XSS) zu verhindern. Trotz all unserer Investitionen in Sicherheitstools kann die Codebasis für die Cybersicherheit jedes Unternehmens das schwächste Glied sein.

Das Säubern und Validieren von Eingaben bildet in der Regel die erste Verteidigungslinie. Indem Entwickler sicherstellen, dass nur korrekt formatierte und sichere Eingaben verarbeitet werden, können sie das Risiko der Ausführung von Schadcode, von Datenlecks und von Anwendungsfehlern verringern.

In diesem Beitrag behandeln wir die Säuberung und Validierung von Eingaben sowie weitere wichtige Faktoren wie Serverkonfigurationen, um Webformulare wirksam abzusichern.

Schritte zur Verhinderung von Webangriffen durch Eingabesäuberung

Cyberkriminelle nutzen weiterhin gängige Schwachstellen aus, um Cyberangriffe wie SQL-Injection, Cross-Site-Scripting (XSS), Remote File Inclusion (RFI) und Directory Traversal zu starten. Zwar gibt es fortschrittlichere Bedrohungen – etwa adversariales maschinelles Lernen, fortgeschrittene Verschleierung und Zero-Day-Exploits –, doch klassische Angriffe sind weiterhin weit verbreitet und für die meisten Sicherheitsverletzungen verantwortlich. Um solche Risiken zu verhindern, müssen Entwickler Daten vor ihrer Verarbeitung oder Speicherung korrekt säubern und validieren.

Steps in using input sanitization to defend against web attacks.
  • Benutzereingaben identifizieren: Überprüfen Sie alle Einstiegspunkte Ihrer Anwendungen, an denen Benutzer Daten übermitteln können, etwa Formulare und Suchleisten. Dazu gehören auch GET- und POST-Anfragen, Cookies und alle anderen von Benutzern übermittelten Eingaben.
  • Eingaben validieren: Stellen Sie sicher, dass Benutzereingaben strengen, festgelegten Regeln für Datentypen, Längen und zulässige Zeichen entsprechen. Wenn Sie beispielsweise eine Zahl erwarten, prüfen Sie, ob die Eingabe tatsächlich numerisch ist. Verwenden Sie Validierungsfunktionen wie filter_var() in PHP oder reguläre Ausdrücke in JavaScript.
  • Eingaben säubern: Säubern Sie die Eingabe nach der Validierung, indem Sie potenziell schädliche Zeichen entfernen oder kodieren. Für PHP können Sie Funktionen wie htmlspecialchars() oder htmlentities() verwenden. In JavaScript verwenden Sie encodeURIComponent().
  • Vorbereitete Anweisungen für Datenbankabfragen verwenden: Fügen Sie Benutzereingaben nicht direkt in SQL-Abfragen ein. Verwenden Sie stattdessen vorbereitete Anweisungen mit gebundenen Parametern, um SQL-Injection-Angriffe zu verhindern. Auf diese Weise werden Eingaben als Daten und nicht als ausführbarer Code behandelt.
  • Sichere Ausgabekodierung überprüfen: Achten Sie bei der Anzeige von Benutzereingaben darauf, dass diese korrekt maskiert sind, um XSS zu vermeiden. Dies ist besonders wichtig für Daten, die in HTML, JavaScript oder URL-Parametern ausgegeben werden.
  • Eingabevalidierung und -säuberung testen: Testen Sie regelmäßig alle Eingabefelder mithilfe automatisierter Sicherheitstools und manueller Penetrationstests auf Schwachstellen. Überprüfen Sie, dass keine schädlichen Eingaben Ihre Validierungs- und Säuberungsverfahren umgehen können.
Advertisement

Was ist der Unterschied zwischen dem Säubern und dem Validieren von Eingaben?

Beim Säubern werden unsichere Zeichen aus Benutzereingaben entfernt, während bei der Validierung geprüft wird, ob die Daten das erwartete Format und den erwarteten Typ aufweisen. Die Eingabesäuberung verändert die Eingabe, um ein gültiges Format für die Anzeige oder vor dem Einfügen in eine Datenbank sicherzustellen.

Differences between input sanitization and input validation
There are several differences between input sanitization and input validation.

Bei der Validierung wird dagegen geprüft, ob eine Eingabe – etwa in einem Webformular – bestimmten Richtlinien und Einschränkungen entspricht, beispielsweise hinsichtlich einfacher Anführungszeichen. Betrachten Sie dazu die folgende Eingabe:

<input id="num" name="num" type="number" />

Ohne Validierung hindert nichts einen Angreifer daran, das Formular auszunutzen, indem er statt der erwarteten Zahl unerwartete Eingaben macht. Er könnte auch versuchen, direkt Code auszuführen, wenn übermittelte Formulare in einer Datenbank gespeichert werden, was häufig vorkommt.

Um eine solche Situation zu verhindern, müssen Entwickler einen Validierungsschritt einbauen, bei dem die Daten vor der weiteren Verarbeitung geprüft werden. Mit einer verbreiteten Sprache wie PHP können Sie beispielsweise Datentyp, Länge und viele weitere Kriterien überprüfen.

Warum Sie Eingaben säubern und validieren sollten

Eingabesäuberung und -validierung sind notwendig, um zu verhindern, dass Angreifer schwache Eingabefelder ausnutzen, Schadcode einschleusen, Datenbanken manipulieren oder Benutzerdaten kompromittieren. Diese Sicherheitsmaßnahmen stellen sicher, dass eine Anwendung nur sichere, erwartete Daten verarbeitet, und verringern so die Sicherheitsrisiken.

Die häufigsten Angriffe auf schwache Eingaben sind XSS-Angriffe, bei denen Angreifer schädliche Skripte in ansonsten vertrauenswürdige Websites einschleusen.

Manche XSS-Angriffe sind offensichtlicher als andere. Selbst wenn Sie sich die Zeit nehmen, Ihre Eingaben zu säubern und zu validieren, kann ein versierter Angreifer unter bestimmten Bedingungen dennoch einen Weg finden, Schadcode einzuschleusen.

Eine klassische Angriffsdemonstration besteht darin, das folgende Skript in eine schwache Eingabe einzuschleusen, wobei der Platzhalter „XSS“ für beliebiges JavaScript steht:

Advertisement

<script>alert('XSS')</script>

Wird der Inhalt der Eingabe auf der Seite angezeigt, kann der Angreifer beliebiges JavaScript auf der Zielwebsite ausführen. Ein typischer Fall ist ein verwundbares Sucheingabefeld, das den Suchbegriff auf der Seite anzeigt:

https://mysite.com/?s=<script>alert('XSS')</script>

Noch schlimmer wird es, wenn der schädliche Eintrag in der Datenbank gespeichert wird. Der Democode mag zwar zum Herumspielen einladen, doch unter realen Bedingungen können Angreifer mit JavaScript vieles anstellen und manchmal sogar Cookies stehlen.

Wann Sie keine Eingabesäuberung verwenden sollten

Die Eingabesäuberung sollte nicht als alleinige Sicherheitsmaßnahme eingesetzt werden, da sie nicht alle Angriffsformen verhindert und versehentlich benötigte Daten entfernen kann.

Das größte Problem bei der Eingabesäuberung ist der falsche Eindruck von Netzwerksicherheit, den sie vermitteln kann. Das Entfernen unerwünschter Zeichen und HTML-Tags ist nur eine Prüfebene. Häufig wird dies schlecht umgesetzt und entfernt zu viele Informationen, etwa legitime Anführungszeichen und Sonderzeichen, während nicht alle Angriffsmöglichkeiten abgedeckt werden. Allgemeine Regeln dürfen nicht blind angewendet werden.

Entscheidend ist der Kontext, einschließlich der verwendeten Programmiersprachen. Es ist wichtig, ein Prinzip namens „spät maskieren“ zu befolgen, also beispielsweise unmittelbar vor der Ausgabe, weil Sie den genauen Kontext kennen, in dem die Daten verwendet werden.

Meiner Erfahrung nach sind die schwierigsten Situationen jene, in denen Sie unveränderte Eingaben und andere freizügige Konfigurationen zulassen müssen. In solchen Fällen wird es schwierig, Daten korrekt zu säubern, und Sie müssen eine eigene Whitelist zulässiger Zeichen pflegen oder bestimmte schädliche Muster manuell auf eine Blacklist setzen.

Stattdessen empfiehlt es sich, robuste Bibliotheken und Frameworks zu verwenden.

Generell dürfen Entwickler nicht davor zurückschrecken, bei fehlerhaften Eingaben Fehler zurückzugeben, statt auf Vermutungen oder Korrekturen zurückzugreifen, die anfällig für Fehler und Schwachstellen sind.

Advertisement

Best Practices: Eingaben säubern, validieren und den richtigen Modus verwenden

Es gibt einige Prinzipien und Best Practices, an denen sich Entwicklungsteams orientieren können, um bestmögliche Ergebnisse zu erzielen. Wir behandeln die übergeordneten Kategorien zusammen mit den konkreten Punkten, auf die Sie achten sollten.

Vertrauen Sie Benutzereingaben nicht

Manche Websites verzichten auf die Prüfung von Benutzereingaben und setzen die Anwendung dadurch einem maximalen Risiko aus. Glücklicherweise kommt das dank des gestiegenen Sicherheitsbewusstseins und der Codeanalyse seltener vor. Eine unvollständige Eingabesäuberung ist allerdings ebenfalls keine gute Lösung.

Hier sind einige mögliche Angriffspfade, die Sie berücksichtigen müssen.

GET-Anfragen

Wenn Entwickler Zeichenfolgen nicht korrekt säubern, können Angreifer XSS-Schwachstellen ausnutzen, etwa:

https://mysite.com/?s=<script>console.log('you are in trouble!');</script>

Das klassische Bewusstsein für Cybersicherheit hebt das obige Beispiel gewöhnlich mit einem einfachen console.log oder sogar einem alert hervor. Es zeigt jedoch, dass jeder beliebiges JavaScript auf Ihrer Seite ausführen kann, indem er ahnungslosen Opfern einfach eine verkürzte Version der fehlerhaften URL sendet.

Einige XSS-Schwachstellen können sogar persistent sein, also beispielsweise in der Datenbank gespeichert werden. Dadurch müssen Angreifer das Opfer nicht mehr dazu bringen, auf etwas zu klicken, weil sie automatisch schädliche Payloads ausliefern und so an die Benutzer der Website senden.

Cookies

Websites verwenden HTTP-Cookies häufig für Sitzungsverwaltung, Anpassungen und Tracking. Entwickler können damit beispielsweise Benutzer anmelden, ihre Einstellungen speichern und ihr Verhalten analysieren.

Der Server erzeugt ein Cookie, also eine Art Datenpaket, und sendet es an den Browser, damit dieser es für die spätere Verwendung speichert. Das Stehlen von Cookies ermöglicht es Angreifern daher, sich als Opfer auszugeben, da sie sofort auf die betroffenen Konten zugreifen können, ohne sich anzumelden.

Darüber hinaus müssen Hacker nicht den Computer des Opfers kompromittieren. Da HTTP-Cookies mit jeder Anfrage gesendet werden, können Angreifer diese Anfragen beispielsweise bei Man-in-the-Middle-Angriffen (MITM) abfangen, um Daten zu stehlen.

Ein ausgefeilterer Ansatz kann einen XSS-Angriff nutzen, um schädlichen Code in die Zielwebsite einzuschleusen und letztlich die Cookies der Benutzer zu kopieren und in deren Namen schädliche Aktionen auszuführen.

Advertisement

Google plant zwar, Cookies schrittweise abzuschaffen in seinem Chrome-Browser im Jahr 2025, dennoch ist es wichtig, Best Practices für die Cybersicherheit zu entwickeln. SSL (Secure Sockets Layer) ist beispielsweise keine optionale Schutzschicht mehr. Wenn der Code jedoch Nicht-SSL-Anfragen sendet, werden Cookies im Klartext übertragen. Stellen Sie daher sicher, dass Sie überall SSL verwenden.

Eine weitere gute Praxis besteht darin, immer das Attribut httpOnlySameSite zu verwenden, um Hijacking durch JavaScript zu verhindern. Auch das Attribut

wird Entwicklern empfohlen.

POST-Anfragen

POST-Anfragen werden serverseitig verarbeitet und legen Daten daher beispielsweise nicht in der URL offen, wenn Sie ein Bild in Ihr Onlinekonto hochladen oder ein Kontaktformular absenden, etwa:

<form action="https://my-website.com/contact" method="POST">

Ein weit verbreiteter Irrtum ist, dass POST-Anfragen sicherer seien als GET-Anfragen. Tatsächlich bieten POST-Anfragen höchstens Sicherheit durch Verschleierung. Für Änderungen durch Benutzer sind POST-Anfragen zwar besser geeignet, für sicherheitsbezogene Zwecke sind sie jedoch keine gute Lösung und erhöhen die Sicherheit nicht automatisch.

Eine einfache Möglichkeit, POST-Daten aus Eingaben in PHP zu säubern, besteht in der Verwendung der folgenden Befehle:

filter_var($_POST['message'], FILTER_SANITIZE_STRING);
filter_var('bobby.fisher@chess.com', FILTER_VALIDATE_EMAIL)

Eine weitere gute Praxis in PHP besteht darin, htmlentities() zu verwenden, um unerwünschte HTML-Zeichen in einer Zeichenfolge zu maskieren.

Wie bei Cookies sollten Sie Daten immer mit SSL verschlüsseln, sodass nur TCP/IP-Informationen unverschlüsselt bleiben.

Directory Traversal

Wenn die Codebasis ein Bild-Tag wie dieses enthält …

<img src="/getImages?filename=image12.png" />

… könnten Hacker versuchen, … zu verwenden

https://yourwebsite.com/getImages?filename=../../../etc/passwd

…, um Zugriff auf die Informationen der Benutzer zu erhalten.

Wenn Ihr Server jedoch korrekt konfiguriert ist, werden solche Versuche, vertrauliche Informationen offenzulegen, blockiert. Sie sollten außerdem Benutzereingaben filtern und sicherstellen, dass nur die erwarteten Formate und Datentypen übertragen werden.

Advertisement

Vertrauen Sie der clientseitigen Validierung nicht

Ein weit verbreiteter Irrtum, insbesondere bei Anfängern, besteht darin, sich ausschließlich auf HTML und JavaScript zu verlassen, um Formulardaten zu validieren. HTML ermöglicht zwar die Definition von Mustern und Pflichtfeldern, etwa die Festlegung einer Zeichenbegrenzung oder das Erzwingen der Eingabe bestimmter Felder, doch jedes HTML-Attribut und jeder JavaScript-Code kann clientseitig verändert werden.

Hacker können das Formular auch mit cURL oder einem beliebigen HTTP-Client absenden. Die Clientseite ist daher keine sichere Ebene für die Formularvalidierung.

Strict Mode aktivieren

Aktivieren Sie nach Möglichkeit den Strict Mode, unabhängig davon, ob es um PHP, JavaScript, SQL oder eine andere Sprache geht. Da der Strict Mode jedoch viele praktische Syntaxvarianten verhindert, kann seine Aktivierung bei erheblichen technischen Altlasten und Legacy-Code schwierig sein.

Wenn Sie jedoch nicht im Strict Mode programmieren, beginnt die Engine zu raten und kann Werte sogar automatisch ändern, damit der Code funktioniert. Dadurch entstehen Schwachstellen, die Hacker ausnutzen können, um schädliche Befehle einzuschleusen.

Andrew Nacin, ein wichtiger Mitwirkender an WordPress, erklärte beispielsweise 2015, wie ein kritischer Sicherheitsfehler hätte vermieden werden können – allein durch die Aktivierung des Strict Mode in SQL. Er demonstrierte, wie Hacker eine kritische Schwachstelle ausnutzen konnten, indem sie Vier-Byte-Zeichen verwendeten, um eine Kürzung durch MySQL zu erzwingen und anschließend Schadcode in die Datenbank einzuschleusen.

Eine einfache Lösung zur Verhinderung dieses Angriffs wäre die Ausführung des Befehls SET SESSION sql_mode = "STRICT_ALL_TABLES" gewesen. Dies lässt sich jedoch nicht aktivieren, ohne alle von WordPress betriebenen Websites zu beschädigen.

Konsultieren Sie den OWASP Web Testing Guide

OWASP, das Open Web Application Security Project, pflegt eine umfassende Dokumentation namens Web Security Testing Guide (WTSG), die Eingabevalidierung umfasst.

Dieser Leitfaden enthält Informationen dazu, wie verschiedene Injection- und andere schwer erkennbare Angriffe auf Eingaben getestet werden. Die Inhalte werden regelmäßig aktualisiert und bieten ausführliche Erklärungen für verschiedene Szenarien.

Beispielsweise können Sie die Seite Testing for Stored Cross Site Scripting aufrufen, um zu erfahren, wie persistentes XSS funktioniert und wie sich der Exploit reproduzieren lässt.

Pop up error message window.

Fazit: Säubern, validieren und spät maskieren

Das Säubern von Eingaben trägt dazu bei, Sicherheitsrisiken zu verringern, sollte aber niemals Ihre einzige Verteidigungslinie sein. Validieren Sie Eingaben immer vor ihrer Speicherung und maskieren Sie Ausgaben vor der Anzeige, um potenzielle Angriffe zu verhindern.

Wer sich ausschließlich auf die Eingabesäuberung verlässt, riskiert Schwachstellen. Verwenden Sie daher Sicherheitsbibliotheken und Frameworks, die zu Ihrem jeweiligen Kontext passen. Durch die Kombination dieser Methoden können Sie Ihre Sicherheit stärken und Ihre Anwendungen vor Cyberangriffen schützen.

Lesen Sie unsere Leitfäden zu Code-Debugging und Tools für Codesicherheit sowie Lösungen für Web Application Firewalls (WAF), um die besten Sicherheitstools zu entdecken, die Ihre allgemeine Sicherheitslage verbessern.

Liz Ticong hat diesen Artikel im Februar 2025 aktualisiert.

Julien Maury

eSecurity Planet contributor Julien Maury writes about penetration testing, code security, open source security and more. He is a backend developer, a mentor and a technical writer who enjoys sharing his knowledge and learning new concepts.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.