Prepared Statements sind die wichtigste Schutzmaßnahme gegen SQL-Injection. Dennoch sollten Unternehmen sämtliche Benutzereingaben zusätzlich prüfen und absichern. Eine konsequente Input-Validierung hilft dabei, fehlerhafte, unerwartete oder offensichtlich manipulierte Eingaben frühzeitig zu erkennen.
Was Input-Validierung leistet
Webanwendungen verarbeiten Daten aus Formularen, Suchfeldern, URL-Parametern und Schnittstellen. Dabei sollte jede Eingabe darauf geprüft werden, ob sie dem erwarteten Format entspricht. Beispiele sind:
Nur Zahlen in einem Feld für Kundennummern
Gültige E-Mail-Adressen in Kontaktformularen
Begrenzte Zeichenzahl in Freitextfeldern
Definierte Werte in Auswahlfeldern
Dieses Vorgehen reduziert das Risiko, dass schädliche Zeichenfolgen oder unerwartete Inhalte weiterverarbeitet werden.
Allowlist statt Blocklist
Sicherer ist es, nur ausdrücklich erlaubte Eingaben zu akzeptieren (Allowlisting), statt nur bekannte problematische Zeichen zu sperren (Blocklisting). So lässt sich beispielsweise festlegen, dass ein Feld nur Ziffern oder bestimmte Zeichen enthalten darf.
Weitere Schutzmaßnahmen für Formulare
Zusätzlich zur Input-Validierung empfehlen sich folgende Maßnahmen:
Serverseitige Prüfung aller Eingaben
Begrenzung von Eingabelängen
Fehlermeldungen ohne technische Details zur Datenbank oder Anwendung
Kontext-spezifische Kodierung von Ausgaben
Schutz vor automatisierten Anfragen
Input-Validierung ersetzt keine Prepared Statements
Input-Validierung ist eine wichtige zusätzliche Schutzmaßnahme, ersetzt aber keine parametrisierten Datenbankabfragen. Erst das Zusammenspiel aus sicherer Programmierung, Eingabeprüfung und weiteren Sicherheitsmechanismen sorgt für einen wirksamen Schutz vor SQL-Injection und anderen Code-Injection-Angriffen.