SQL-Injection ist eine cyberattack Dies nutzt die schlechte Eingabevalidierung in SQL-Abfragen aus. Wenn eine Anwendung nicht vertrauenswürdige Benutzereingaben in einer SQL-Abfrage an eine Datenbank verwendet, kann die Abfrage möglicherweise durch absichtlich fehlerhafte Benutzereingaben geändert werden. SQL-Injection-Angriffe können verwendet werden, um auf Daten in der Datenbank zuzugreifen, diese zu ändern oder zu löschen.
Anwendungen, die SQL-Abfragen basierend auf Benutzereingaben durchführen, sind potenziell anfällig für SQL-Injection-Angriffe. Beispielsweise kann eine Webanwendung SQL-Abfragen verwenden, um einen Authentifizierungsprozess zu implementieren. Der Benutzer gibt seinen Benutzernamen an, den die Anwendung verwendet, um den Hash des Passworts für das Konto dieses Benutzers abzurufen. Wenn der Hash des vom Benutzer bereitgestellten Passworts mit diesem Passwort-Hash übereinstimmt, authentifiziert sich der Benutzer erfolgreich und erhält Zugriff auf sein Konto.
Wenn die Webanwendung keine Validierung des Benutzernamens durchführt, bevor sie ihn in eine SQL-Abfrage einbezieht, könnte ein absichtlich falsch formatierter Benutzername vom Programm falsch interpretiert werden. Beispielsweise verwenden SQL-Abfragen häufig einfache Anführungszeichen (') oder doppelte Anführungszeichen (“), um Daten in einem Befehl zu kennzeichnen. Beispielsweise könnte ein Befehl zum Nachschlagen eines Kundendatensatzes in einer Datenbank basierend auf dem Benutzernamen user lauten SELECT * FROM customer WHERE username=“user“.
Ein Angreifer, der einen SQL-Injection-Angriff gegen seinen Befehl durchführt, könnte ein doppeltes Anführungszeichen in seine Eingabe einfügen, damit einige seiner Daten als Code interpretiert werden. Betrachten Sie beispielsweise den Benutzernamen Benutzer“ ODER „1“=“1.
Beim Einfügen in die SQL-Abfrage wird die Abfrage zu SELECT * FROM customer WHERE username=“user“ OR „1“=“1“. Anstatt nach Datensätzen zu suchen, bei denen der Benutzername mit dem vom Benutzer angegebenen Wert übereinstimmt, gibt diese Abfrage Datensätze zurück, die eine von zwei Bedingungen erfüllen. Der erste ist der beabsichtigte Test Benutzername = „Benutzer“, was den Datensatz des Benutzers zurückgeben würde.
Die zweite Bedingung ist der Test „1“=“1“. Da dies immer zutrifft, werden alle Datensätze in der Datenbank zurückgegeben. Dies könnte es dem Angreifer ermöglichen, vertrauliche Informationen über andere Benutzer zu extrahieren oder möglicherweise die Authentifizierung zu umgehen oder sich als anderer Benutzer zu authentifizieren.
SQLi-Angriffe können zu unterschiedlichen Zwecken eingesetzt und auf unterschiedliche Weise durchgeführt werden. Zu den drei Haupttypen von SQLi gehören:
SQLi-Angriffe machen sich die schlechte Eingabevalidierung zunutze, wenn nicht vertrauenswürdige Daten für SQL-Befehle verwendet werden. Bei vielen SQLi-Angriffen wird in der Benutzereingabe ein unerwartetes Zeichen, beispielsweise ein einfaches oder doppeltes Anführungszeichen, verwendet.
Die Durchführung einer Eingabevalidierung vor der Einbindung von vom Benutzer bereitgestellten Daten in SQL-Abfragen kann dazu beitragen, die Gefahr von SQLi-Angriffen zu verringern. Beispielsweise könnte eine Anwendung die Benutzereingabe auf einen bestimmten Satz von Zeichen beschränken, indem sie beispielsweise nur alphanumerische Benutzernamen zulässt, oder die Aufnahme bestimmter Zeichen in die Benutzereingabe blockieren. Allerdings ist die Eingabevalidierung zwar wichtig, reicht aber nicht aus, um vor SQL-Injection-Angriffen zu schützen. Angreifer können möglicherweise Zulassungs- oder Blockierungslisten umgehen, indem sie unerwartete Zeichenkombinationen verwenden, um Blockaden zu umgehen.
Aus diesem Grund sollten Unternehmen auch a Web Application Firewall (WAF) oder idealerweise Schutz von Webanwendungen und APIs (WAAP) vor Webanwendung und API, die SQL-Abfragen durchführen. Diese Lösungen können dabei helfen, bösartige Anfragen zu identifizieren und zu blockieren, die versuchen, SQLi und andere Angriffe gegen Webanwendungen und APIs auszunutzen.
SQLi-Angriffe sind einer von vielen Angriffen, die eine Bedrohung für ein Unternehmen darstellen Anwendungssicherheit (AppSec). Unternehmen benötigen Sicherheitslösungen, die ihre mit dem Internet verbundenen Anwendungen und Datenbanken sowohl vor Ort als auch in der Cloud schützen können.
Check Point CloudGuard AppSec bietet automatisierte WAAP-Funktionen, die lernen, wie eine Anwendung funktioniert, und verhindern, dass unrechtmäßige und böswillige Anfragen anfällige Anwendungen erreichen. Weitere Informationen zu CloudGuard AppSec und seiner Fähigkeit zum Schutz vor SQLi und anderen Angriffen finden Sie hier E-Book. Gerne auch Melden Sie sich für eine kostenlose Demo an um sich selbst von den Möglichkeiten von CloudGuard AppSec zu überzeugen.