SQL-Injection

Was ist SQL-Injection?

Eine SQL-Injektion ist ein Computerangriff, bei dem bösartiger Code in eine schlecht konzipierte Anwendung eingebettet und dann an die Backend-Datenbank weitergeleitet wird. Die bösartigen Daten führen dann zu Datenbankabfrageergebnissen oder Aktionen, die niemals hätten ausgeführt werden dürfen.

Techopedia erklärt die SQL-Injection

Lassen Sie uns ein Beispiel für einen SQL-Injection-Angriff durchgehen:

Die Anwendung einer Bank enthält Menüs, die zur Suche nach Kundendaten anhand von Datenpunkten wie der Sozialversicherungsnummer des Kunden verwendet werden können. Im Hintergrund ruft die Anwendung eine SQL-Abfrage auf, die in der Datenbank läuft, indem die eingegebenen Suchwerte wie folgt übergeben werden:

SELECT kunde_name, telefon, adresse, geburtsdatum WHERE sozialversicherungsnummer=23425

In diesem Beispielskript gibt der Benutzer den Wert 23425 in das Menüfenster der Anwendung ein und wird aufgefordert, die Sozialversicherungsnummer einzugeben. Anschließend wird anhand des vom Benutzer eingegebenen Wertes eine SQL-Abfrage in der Datenbank ausgeführt.

Ein Benutzer mit SQL-Kenntnissen kann die Anwendung verstehen und statt der Eingabe eines einzelnen Wertes bei der Frage nach der Sozialversicherungsnummer die Zeichenfolge “23425 oder 1=1” eingeben, die wie folgt an die Datenbank weitergeleitet wird:

SELECT kunde_name, telefon, adresse, geburtsdatum WHERE sozialversicherungsnummer=23425 oder 1=1

Die WHERE-Klausel ist wichtig, weil sie eine Schwachstelle enthält. In einer Datenbank ist die Bedingung 1=1 immer wahr, und da die Abfrage so spezifiziert wurde, dass sie Details zur Sozialversicherungsnummer des Kunden (23425) oder WHERE 1=1 zurückgibt, wird die Abfrage alle Zeilen in der Tabelle zurückgeben, was nicht die ursprüngliche Absicht war.

Das obige Beispiel für einen SQL-Injection-Angriff ist einfach, zeigt aber, wie eine Schwachstelle ausgenutzt werden kann, um die Anwendung dazu zu bringen, eine Backend-Datenbankabfrage oder einen Befehl auszuführen.

SQL-Injection-Angriffe lassen sich durch ein angemessenes Anwendungsdesign entschärfen, insbesondere in Modulen, die Benutzereingaben zur Ausführung von Datenbankabfragen oder -befehlen erfordern. Im obigen Beispiel könnte die Anwendung so geändert werden, dass sie nur einen numerischen Wert akzeptiert.

Verwandte Begriffe

Margaret Rouse

Margaret Rouse ist eine preisgekrönte technische Autorin und Dozentin. Sie ist für ihre Fähigkeit bekannt, komplexe technische Themen simpel und nachvollziehbar zu erklären. In den letzten zwanzig Jahren sind ihre Erklärungen auf TechTarget-Websites erschienen und sie wurde in Artikeln der New York Times, des Time Magazine, USA Today, ZDNet, PC Magazine und Discovery Magazine als Quelle und Expertin zitiert. Wenn Sie einen Vorschlag für eine neue Definition haben oder eine technische Erklärung verbessern möchten, schicken Sie einfach Margaret eine E-Mail oder kontaktieren Sie sie auf LinkedIn oder Twitter.