SQL-Injection ist eine Sicherheitslücke, die insbesondere in Datenbank-getriebenen Applikationen vorkommt. Der Begriff beschreibt einen Angriff, bei dem ein Angreifer schadhaften SQL-Code in eine Abfrage einfügt, um unbefugten Zugriff auf die Datenbank zu erlangen oder diese zu manipulieren. SQL steht hierbei für "Structured Query Language" und ist die gängige Sprache für die Kommunikation mit Datenbanken.
Diese Art von Angriff erfolgt in der Regel über Eingabefelder auf einer Website oder in einer App, die nicht ausreichend validiert oder geschützt sind. Der Angreifer gibt speziell gestaltete Zeichenketten ein, die die ursprüngliche SQL-Abfrage verändern. Beispielsweise könnte eine SQL-Abfrage, die eigentlich nur Benutzernamen und Passwörter überprüfen soll, plötzlich auch andere Daten aus der Datenbank extrahieren oder sogar die gesamte Datenbank löschen, wenn sie entsprechend manipuliert wird.
SQL-Injection kann schwerwiegende Folgen haben. Einige davon sind Datenverlust, Datenkorruption, unautorisierter Zugriff auf sensible Informationen und vollständige Kompromittierung des Systems. Das kann nicht nur zu finanziellen Schäden führen, sondern auch den Ruf eines Unternehmens erheblich beeinträchtigen.
Um SQL-Injection zu verhindern, setzen Entwickler verschiedene Sicherheitsmaßnahmen ein. Dazu gehört zum Beispiel die Verwendung vorbereiteter (parameterisierter) Abfragen, die eine klare Trennung zwischen Code und Daten gewährleisten. Weitere Maßnahmen sind die Validierung und Säuberung von Benutzereingaben sowie die regelmäßige Überprüfung und Aktualisierung der eingesetzten Software und Datenbank-Management-Systeme (DBMS).
Durch die Implementierung solcher Sicherheitspraktiken können Entwickler das Risiko von SQL-Injection-Angriffen erheblich reduzieren und die Integrität sowie die Sicherheit ihrer Anwendungen gewährleisten.