Worum es geht
Skript 09, Folien 10 bis 12: Erinnerung SQL-Injection, Prepared Statements, Vorteile von Prepared Statements.
Programme bauen SQL-Befehle oft aus Text und einer Eingabe zusammen, etwa einer Produktnummer aus einem Formular. Die Frage dieses Abschnitts: Was kann ein Benutzer damit anrichten, und wie schreibt man es richtig?
Zum Ausprobieren nehmen wir eine Beispieltabelle Product mit drei Zeilen; sie steht nicht im Skript. pnr ist die Produktnummer, categoryid die Kategorie.
"… WHERE categoryId = " + cid. Ausgeführt wird es mit executeQuery, gelesen mit while (rs.next()).So gehen wir vor:
- Drei Eingaben in einen zusammengeklebten Befehl einsetzen.
- Denselben Befehl mit Platzhalter schreiben.
- Prüfen, dass der Angriff jetzt ins Leere läuft.
- Die Vorteile von Prepared Statements.
- Eine Klausurfrage dazu.
Abweichung vom Skript: Folie 11 nennt die Produktnummer productid, Folie 10 pnr. Wir bleiben überall bei pnr.