Robert Bienert: SQL-Injections

Beitrag lesen

Moin!

Wieso unterscheidest du denn überhaupt zwischen „Integer-Abfragen“ und „String-Abfragen“? Zumindest in MySQL, vielleicht sogar laut SQL-Standard, ist auch das quoten einer Zahl erlaubt:
SELECT * FROM meiner_tabelle WHERE id='25'

was der Standard sagt - keine Ahnung. DB2 6-8 ist da sehr kritisch:
"Die Datentypen der Operanden für die Operation "=" sind nicht kompatibel."

Oha, das ist doch interessant.

Im Endeffekt verlangst du ja auch von der DB ein automatisches CASTEN von CHAR nach INT, eine überflüssige Operation.

Wenn ich auf Nr. Sicher gehen will, muss ich in meiner Anwendung von String nach INT casten, also gecastet wird auf jeden Fall. Und selbst SQL muss in beiden Fällen eine Typumwandlung durchführen, weil (im Beispiel) die 25 beides mal in einem String auftaucht.

Viele Grüße,
Robert