SQL Injection

Alltags-Analogie

einem Trick vergleichen, bei dem jemand einer Behörde scheinbar harmlose Angaben auf einem Formular macht, die in Wahrheit aber zusätzliche, versteckte Anweisungen enthalten, die die Behörde unbeabsichtigt ausführt, weil sie die Eingabe nicht ausreichend geprüft hat

Was steckt dahinter?

SQL ist die standardisierte Sprache, mit der praktisch jede relationale Datenbank angesprochen wird, und eine SQL Injection lässt sich am besten mit einem Trick vergleichen, bei dem jemand einer Behörde scheinbar harmlose Angaben auf einem Formular macht, die in Wahrheit aber zusätzliche, versteckte Anweisungen enthalten, die die Behörde unbeabsichtigt ausführt, weil sie die Eingabe nicht ausreichend geprüft hat. Bei einer SQL Injection schleust ein Angreifer gezielt manipulierte Eingaben in ein Formularfeld einer Webseite ein, die so formuliert sind, dass sie von der Datenbank nicht als harmloser Text, sondern als zusätzlicher, ausführbarer SQL-Befehl interpretiert werden. Gelingt ein solcher Angriff, kann er weitreichende Folgen haben: Ein Angreifer könnte sich Zugriff auf eigentlich geschützte Daten verschaffen, etwa auf gespeicherte Kundendaten oder Passwörter, bestehende Daten unbemerkt verändern, oder im schlimmsten Fall ganze Tabellen einer Datenbank vollständig löschen. Historisch zählte SQL Injection über viele Jahre zu den am häufigsten ausgenutzten Sicherheitslücken im Web überhaupt, gerade weil viele ältere Anwendungen Nutzereingaben direkt, ungeprüft in SQL-Befehle einbauten. Moderne Entwicklungspraxis hat dieses Risiko deutlich reduziert, vor allem durch den konsequenten Einsatz sogenannter “Prepared Statements” oder eines ORMs wie Eloquent in Laravel, die Nutzereingaben grundsätzlich getrennt von der eigentlichen Befehlsstruktur behandeln und automatisch korrekt absichern. Dennoch bleibt SQL Injection insbesondere bei älteren, schlecht gewarteten Systemen oder bei eigenem, handgeschriebenem Datenbankcode ohne ein solches Sicherheitsnetz eine ernstzunehmende Gefahr, weshalb regelmäßige Sicherheitsüberprüfungen (Penetrationstests) gerade bei Anwendungen mit sensiblen Daten empfehlenswert sind.