Eine SQL-Injection ist ein Angriff auf Anwendungen, die mit relationalen Datenbanken arbeiten. Dabei werden manipulierte Eingaben so in eine SQL-Abfrage eingeschleust, dass sich deren ursprüngliche Bedeutung verändert.
Die Schwachstelle entsteht häufig, wenn eine Anwendung Nutzereingaben direkt mit SQL-Code zusammensetzt. Angreifer können dann versuchen, Abfragen zu erweitern, Bedingungen zu umgehen oder zusätzliche Datenbankbefehle auszuführen.
Je nach Schwachstelle und Berechtigung des Datenbankkontos können Angreifer folgende Aktionen durchführen:
Nicht jeder Angriff liefert sichtbare Ergebnisse. Bei einer Blind SQL-Injection werden Informationen beispielsweise aus unterschiedlichen Antwortzeiten oder aus dem Verhalten der Anwendung abgeleitet.
Eine Web Application Firewall kann bekannte Angriffsmuster erkennen und blockieren, behebt aber nicht die fehlerhafte Abfrage im Quellcode. Angriffe können Regeln umgehen, und legitime Anfragen können fälschlich blockiert werden. Die wichtigste Schutzmaßnahme bleibt daher eine sichere Datenbankanbindung mit konsequenter Parametrisierung.
Object-Relational Mapper stellen häufig sichere Methoden für parametrisierte Abfragen bereit. Werden jedoch unkontrollierte Eingaben in Rohabfragen, dynamische Filter oder selbst zusammengesetzte SQL-Fragmente übernommen, kann weiterhin eine Schwachstelle entstehen. Auch bei Verwendung eines ORM sind sichere Programmierregeln und Tests notwendig.
Wir beraten Sie gerne und finden die perfekte Lösung für Sie. Lassen Sie sich von unseren Ideen inspirieren!
