Moin!
dass Du kein Problem siehst liegt daran, dass Du fälschlicherweise davon ausgehst, Statements könnten nicht beendet und nach einem beendeten Statement kein neues begonnen werden. Jeder Besucher Deiner Website könnte Deine Tabellen löschen - und vielleicht auch noch mehr.
mysql_query() erlaubt nur die Ausführung eines einzigen Statements. Erst mysqli_multi_query() wäre anfällig für das Einfügen weiterer SQL-Befehle wie "DROP DATABASE" hinter einem Semikolon.
Trotzdem ist die Argumentation richtig: Wenn Niels jetzt schon kein Problem sieht, wo eindeutig ganz viele sind, wird er irgendwann unwissend in die Falle tappen, weil er sich nicht angewöhnt hat, sämtliche Daten, die er aus Variablen in ein SQL-Statement packt, egal wo sie herkommen, immer zu escapen!
Das hat nicht mal was mit "Daten kommen vom User" zu tun - auch legale Daten, die hundertprozentig in der Gewalt der Anwendung stehen und validiert wurden, können ganz banal genau die Zeichen enthalten, die das SQL-Statement ungültig machen. Es reicht schon, wenn man aus der Datenbank den Namen "O'Brien" ausliest, und wieder ins SQL einbaut.
- Sven Rautenberg