Dein Beispiel ist mir schon bewusst, aber da sind wieder injections möglich, weil das Prepare das nicht abfängt, deswegen brauchst du ja eine WhiteList und da kommt das escapen bzw. anderweitige validieren ins spiel, was du ja machst. *_real_escape_string wäre zum prüfen ebenfalls möglicht.
Könnte man sich streiten. Ich vertraue da einer whitelist (viel) mehr.
mein "da draußen" läuft über skalierbare Cloud Anwendungen,
Naja, das wird dann wohl doch ein bissl zu viel für das Forum, oder?
Hier nur der bezug auf deine Aussage Sicherheit > "speed" Ja, aber nicht über PreparedStatements weil der Sicherheitsaspekt zu den Prepared Statements kleiner ist als der Overhead.
Für Anfänger, die hier im Forum lernen? Ach komm.
Das bischen overhead ... wenn überhaupt.
Ich hab das nicht getestet, aber die real escape Funktion nutzt das db handle,
also wird die auch beim MySQL Server anfragen. Und das per call (value).
Prepared Statements schützen nur vor first-order injections nicht second-order
Bin mir fast ganz sicher, das die Aussage falsch ist.
Wenn ich second order injection richtig verstanden habe, dann kann*1 beim Verwenden der Daten aus der db
in einer Query die (2nd order) injection möglich werden.
*1 Aber dann eben nicht. Denn da nutzten wir doch auch wieder Prepared Statements.
Wer sowas schreibt ... WHERE foo = {$row['foo']} ... gehört ... belehrt
Und genau das is es btw, was ich immer sage: alle Daten sind böse. Selbst die in der eigenen db.
Und daher gilt doch, was ich am Anfang sagte: die Daten gehen so wie sie sind in die db.
Lange muss nicht richtig heißen. Pauschal aussagen bekommen pauschal antworten.
Hehe, you got me there. Naja, Wochen, Momante. Weiß nicht mehr.
Aber ich bin keiner, der code kopiert. Ich will (so weit möglich) wissen wie und warum etwas funktioniert.