SQL-Injection-Attacke

Nicht nur unsere selbst erstellten PHP-Skripte, sondern auch die dahinterliegenden Datenbankserver mit den Datenbanken sind zu schützen. Sicherlich ist es immer wieder nötig, Variablen aus Formularen oder URLs in ein SQL-Kommando zu übernehmen. Beispielsweise muss, wenn ein Benutzer sich einloggt und die Benutzerdaten in der SQL-Datenbank liegen, eine SQL-Abfrage nach dem Passwort gestartet werden:

Dies sieht zunächst einmal nicht wie an Angriffsziel aus. Allerdings, wenn bedacht wird, dass für die Variable benutzer aus dem Netz beliebiger Inhalt eingesetzt kann, könnte der Angreifer folgendes in diese Variable einfügen:

benutzer = "‘; DROP DATABASE benutzerdatenbank;

Dies hat den Effekt, dass die komplette SQL-Abfrage nach dem Einfügen der sehr merkwürdig aussehenden Variablenbelegung wie folgt zusammengestellt worden ist:

Ein neues SQL-Kommando ist unberechtigt eingeschleust worden, welches bei der Ausführung unsere vollständige Datenbank löscht. Auch Anführungszeichen vor und hinter der Variable haben diesen Angriff nicht abwehren können. Die dazwischen geschobene Variable schließt die Variable mit dem einfachen Anführungszeichen einfach zunächst ab, bevor die eigene Anfrage angehängt wird.

Gegen diese Art der Attacke hilft wiederum eine restriktive Prüfung des übergebenen Strings. Alternativ lassen sich auch mit der Methode mysqli_real_escape_string() bösartige Strings mit Anführungszeichen verändern, so dass alle Anführungszeichen escaped sind und damit nicht auf Kommandoebene, sondern auf Variableebene betrachtet werden. Ein einfaches Escapen von gefährlichen Zeichen mit addslashes() reicht jedoch nicht aus.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen