Tach!
Und das heißt eben daß ein per HTTP eingereichtes Statement schon aus der Kontrollstruktur herausfallen muss und gar nicht erst am DB-Server ankommen darf.
Das würde bedeuten, dass man erst noch einen SQL-Parser schreiben müsste, um den ankommenden Wert als SQL-Statement-Teil zu erkennen. Das wäre zu viel Aufwand.
Unsinn. Den Parameter Sprachen zu prüfen beschränkt sich auf einen String. Und mit Sicherheit ist die Anzahl der Sprachen nicht unendlich groß. Und mit den anderen Parametern verhält es sich ganz ähnlich.
Vielmehr muss das Statement auf dem Server liegen und wird allenfalls mit Platzhaltern gefüttert die diesem Kontext entsprechend geprüft und behandelt wurden.
Ja, so war das ja auch vorgesehen. Angriffe halten sich aber nicht daran und probieren es trotzdem mit Statementbestandteilen über reguläre Parameter.
Eben. Und genau dagegen kann man was tun: Stichwort SQL Injektion, prepared Statements.
MfG