Laravel: Sind SQL-Injections möglich?
Mit SQL-Injections können Angreifer Zugriff auf deine Datenbank bekommen. Das geht zum Beispiel so:
DB::update('UPDATE kunden SET aktiv = 1 WHERE id = ".$_GET['id']);
In diesem Fall wird der Parameter id direkt in einen SQL-Befehl geschrieben. Nun kann der Angreifer einfach folgendes in den GET-Parameter schreiben
1 OR 1 = 1
In diesem Fall wird aus dem SQL-Statement Folgendes:
UPDATE kunden SET aktiv = 1 WHERE id = 1 OR 1 = 1
So werden nun alle Kunden geupdatet, statt ein Einzelner.
SQL-Injections in Laravel verhindern
Der beste Weg um SQL-Injections in Laravel zu verhindern ist die Nutzung von Eloquent. Das hilft auch dabei, den Quellcode ordentlich zu strukturieren.
Wer dennoch auf die DB-Funktionen angewiesen ist, kann hier mit Parametern arbeiten:
DB::update('update kunden set aktiv = 1 where id = ?', [$_GET['id']);
In diesem Fall wird der Parameter im SQL-Statement mit einem Fragezeichen markiert. Im zweiten Attribut werden dann nacheinander alle Parameter als Array übergeben.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project