SQL-Injection
Bei einer SQL-Injection schleust ein Angreifer über Eingabefelder oder URLs eigene Datenbankbefehle in eine Anwendung ein und liest oder verändert so fremde Daten.
Ausführliche Erklärung
Die Schwachstelle entsteht, wenn eine Anwendung Benutzereingaben ungeprüft in eine Datenbankabfrage einbaut. Aus einem Suchbegriff wird so Teil des Befehls.
Beispiel
Ein Login prüft Benutzername und Passwort mit einer Abfrage, die den eingegebenen Text direkt einbaut. Trägt ein Angreifer im Passwortfeld ' OR '1'='1 ein, ist die Bedingung immer wahr, und die Anmeldung gelingt ohne gültiges Passwort.
Folgen
- Auslesen von Kundendaten, Passwort-Hashes und weiteren Tabellen
- Umgehen von Anmeldungen
- Verändern oder Löschen von Datensätzen
Schutz in der Entwicklung
- Prepared Statements (parametrisierte Abfragen) statt zusammengesetzter Texte. Frameworks mit ORM nutzen sie in der Regel, solange keine Roh-Abfragen mit zusammengesetzten Texten gebaut werden
- Eingaben prüfen und auf erwartete Formate begrenzen
- Datenbankkonto der Anwendung mit minimalen Rechten betreiben
- Regelmäßige Penetrationstests und eine WAF als zusätzliche Schicht
Softwareentwicklung
Ihr Vorhaben technisch einordnen
Im kostenlosen Erstgespräch von 30 Minuten schildern Sie Ihr Vorhaben. Wir sagen, welche Technik passt und wie wir Umsetzung und Betrieb angehen.