Sehr oft bekommt man Codes wie diesen zu Gesicht:
Wenn ich nun in
Was aber, wenn ein Bösewicht in
Dann erhalte ich
Das sind nun zwei Sql-Kommandos in einer Zeile.
Und - bitte hinschauen! - in Ausführung löscht das zweite Kommado die Tabelle `User`
ups!
Ja, so geht Sql-Injection
Ich hoffe, nun klar, wie kriminell fahrlässig es ist, Sql-Statements veränderlichen Inhalts ohne Verwendung von DbParametern an eine Datenbank zu senden.
Nachworte
Wenn ich nun in
Textbox1
"Heinz" eingebe, und in Textbox2
"Hacker", so erhalte ich als Wert von sSql
dieses:So ist das wohl gedacht, und in Ausführung wird das einen Datensatz in die Tabelle `User` schreiben.Was aber, wenn ein Bösewicht in
Textbox2
nun folgendes komisches als "Nachname" eintippt: Hacker'); DROP TABLE `User`; --
Dann erhalte ich
sSql
als:Und - bitte hinschauen! - in Ausführung löscht das zweite Kommado die Tabelle `User`
Ja, so geht Sql-Injection
Ich hoffe, nun klar, wie kriminell fahrlässig es ist, Sql-Statements veränderlichen Inhalts ohne Verwendung von DbParametern an eine Datenbank zu senden.
- Danke an @Niko Ortner, der das Sample in diesem Post formuliert hat: Was sind Injections? - Kleine Erklärung
- Nicht, dass jmd denkt, ich sei der einzige Spinner, der DbParameter als "Must-Use - No-Excuces" propagiert: Sinngemäß dasselbe (und noch weitere Argumente) kann man zB auch hier nachlesen - man sieht: es gilt ebenso für c#.
- Bitte statt Antwortposts lieber PM an mich. Diesen Tipp möchte ich als ganz konzentriert erhalten.
Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von „ErfinderDesRades“ ()