Was ist eine SQL-Injection?

April 25

Was ist eine SQL-Injection?

Eine SQL-Injection ist ein bösartigen Angriffs auf eine Computerdatenbank, bei dem ein Angreifer fügt oder injiziert, eine SQL-Abfrage--eine formelle Anfrage an die Datenbank--in eine Zeichenfolge, die schließlich von der Datenbank, über die Daten ausgeführt wird, das er in ein Computerprogramm eingibt. Im Erfolgsfall eine SQL Injection kann sensible Daten aus der Datenbank zu extrahieren, einfügen, aktualisieren oder Löschen von Daten oder sogar das Datenbank-Management-System heruntergefahren.

Dynamisches SQL

SQL-Injektion nutzt eine Programmiertechnik, bekannt als "dynamisches SQL." Der vollständige Text der eine dynamische SQL-Anweisung oder einen Befehl, ist unbekannt, wenn ein Programm kompiliert wird, aber ist konstruiert, dynamisch, aus den Daten, die vom Benutzer eingegebenen, wenn das Programm ausgeführt wird. Ein Angreifer den konstruierten Befehl vorzeitig beendet und fügt einen neuen Befehl, beendet mit einem Kommentar versehen, wie z. B. "--", so dass alle nachfolgender Text zur Ausführungszeit ignoriert wird. In eine etwas komplexere Form der SQL-Injection injiziert ein Angreifer schädlichen Code in der in der Datenbank gespeicherten Daten; Wenn die gespeicherten Daten abgerufen und verwendet, um eine dynamische SQL-Anweisung zu erstellen, wird die bösartige Code ausgeführt.

Effekte

Genau was Angreifer durch SQL-Injection zu erreichen, hängt von ihrer Phantasie und Geschick, aber typische Folgen einer SQL-Injektion sind Gewinn-vertraulich, Datenintegrität und Probleme im Zusammenhang mit der Authentifizierung oder Autorisierung von Datenbankbenutzern. Wenn Berechtigungsinformationen in der Datenbank selbst gehalten wird, kann eine SQL Injection Informationen zu extrahieren oder ändern, so dass nicht autorisierte Benutzer mit der Datenbank herstellen können.

Betroffenen Plattformen

SQL-Injection gilt natürlich der SQL, die am häufigsten verwendeten Datenbank-Abfragesprache, aber jeder Plattform, die Interaktion mit einer SQL-Datenbank erfordert beeinflusst werden kann. SQL-Injection-Schwachstellen sind leicht zu erkennen und einfach zu nutzen, was bedeutete, dass SQL-Injection ist geworden ein häufiges Problem mit Datenbank-Software-Pakete und datenbankgestützte Websites.

Validierung

Wenn ein Angriff bösartigen SQL-Code, der ohne Fehler ausgeführt wird injiziert, gibt es keine Möglichkeit, SQL-Injection innerhalb eines Computerprogramms zu erkennen. Datenbankprogrammierer müssen deshalb überprüfen alle Programmcode, der dynamische SQL-Anweisungen erstellt und alle Benutzereingaben, ohne dass alle Annahmen über die Größe, die Inhalte oder die Art der Daten überprüfen. Ein Angreifer kann absichtlich einbetten eine Anweisung "DROP TABLE" oder einige andere, gleichermaßen böswillige Anweisung in einem Textfeld so dass Programmierer dafür zu sorgen, dass Programme unter solchen Umständen entsprechend Verhalten.