Sql-Injection-Proof-of-Concept: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 25: Zeile 25:
  
 
;Bei der sicheren Methode wird die Benutzereingabe nicht direkt weiter benutzt.
 
;Bei der sicheren Methode wird die Benutzereingabe nicht direkt weiter benutzt.
In diesem Beispiel wird die eine php-Funktion benutzt, die dafür sorgt, dass Special Charakters entwertet werden und so ein String entsteht, der in einer SQL Abfrage sicher benutzt werden kann.
+
In diesem Beispiel wird eine php-Funktion benutzt, die dafür sorgt, dass Special Charakters entwertet werden und so ein String entsteht, der in einer SQL Abfrage sicher benutzt werden kann.
  
 
Die an die Datenbank geschickte Abfrage sieht in diesem Fall so aus:
 
Die an die Datenbank geschickte Abfrage sieht in diesem Fall so aus:

Version vom 10. Oktober 2020, 12:21 Uhr

Test Seite

Unsichere Seite

Sql-injection-1.png

Sichere Seite

Sql-injection-2.png

Erläuterung

Bei der Unsicheren Methode wird folgender Query abgesetzt.
  • SELECT * FROM users WHERE username='$search';
Wenn wir in die Variable $search folgendes schreiben

$search = ' or '1' = '1

wird folgender Suchausdruck gebildet
  • SELECT * FROM users WHERE username=' ' or '1' = '1';
da der 2. Ausdruck wahr ist, wird die ganze Tabelle ausgegeben.


Das Sicherheitsproblem wird also dadurch verursacht, dass eine Benutzereingabe ungeprüft bzw. unverarbeitet direkt weiter benutzt wird - hier in einer SQL- Anweisung.

Bei der sicheren Methode wird die Benutzereingabe nicht direkt weiter benutzt.

In diesem Beispiel wird eine php-Funktion benutzt, die dafür sorgt, dass Special Charakters entwertet werden und so ein String entsteht, der in einer SQL Abfrage sicher benutzt werden kann.

Die an die Datenbank geschickte Abfrage sieht in diesem Fall so aus:

SELECT * FROM users WHERE username='\'or\'1\'=\'1'

Prinzipiell sollten alle Daten die von Außen kommen als unsicher angesehen werden und niemals ohne eine Prüfung und/oder Bearbeitung weiterverwendet werden.