Vinzenz Mai: SQL Code-Einschleusung

Beitrag lesen

Hallo Dennis,

Das _kann_ so sein, _muss_ es aber nicht - wenn nämlich in dem SQL Code noch ein LIMIT 1 mit drinsteckt, dann deckt diese Überprüfung die gegebene SQL-Injection nicht auf. Und LIMIT 1 zu verwenden macht ja durchaus Sinn um die Datenbank etwas zu entlasten.

Nö, wieso? Für LIMIT 1 habe ich in dem hier diskutierten Zusammenhang überhaupt kein Verständnis. Nein, auch nicht, um die Datenbank zu entlasten. Wenn schon LIMIT oder TOP (oder was auch immer der SQL-Dialekt hergibt), dann LIMIT 2 :-)

Begründung:
Ich erwarte entweder keinen oder einen Datensatz. Kein Datensatz heißt Fehlschlag. Bei einem Datensatz erfolgt meine Zusatzprüfung. Mehr als ein Datensatz bedeutet einen Fehlschlag, zusätzlich aber auch dass ich einen Fehler oder eine Lücke in meinem Code habe. Das ist eine interessante Information, die ich mit LIMIT 2 immer noch erhalte, mit LIMIT 1 jedoch nicht mehr.
Im Normalfall bringt also ein LIMIT 1 überhaupt keine Entlastung, im Ausnahmefall sorgt LIMIT 1 dafür, dass ich eine Chance, eine Lücke (einen Fehler) in meinem Code zu entdecken, zunichte mache. Selbstverständlich bin ich der Ansicht, dass ich _keinen_ Fehler drin habe, aber warum soll ich Angreifern das Leben leichter machen?

Freundliche Grüße

Vinzenz