Worum es geht
Skript 06, Folien 27–30: Prepared Statements, Binden, Vorteile.
Wird eine Eingabe in den SQL-Text kopiert, schreibt der Benutzer am SQL mit. Wie schickt man Werte so an die Datenbank, dass sie immer nur Werte bleiben?
$param = "CATS' OR 'X' = 'X" wird aus categoryid='$param' eine immer wahre Bedingung: Die Abfrage liefert alle Zeilen. Das heißt SQL-Injection.So gehen wir vor:
- Platzhalter, prepare, bind_param, execute, Ergebnis lesen.
- Die Variante mit get_result und fetch_assoc.
- Die Typ-Buchstaben von bind_param.
- Warum der Angriff jetzt scheitert, und die Vorteile.
- Eine Klausurfrage dazu.