Vinzenz Mai: Benutzerabfrage in PHP+MySQL

Beitrag lesen

Hallo Christoph,

» Beachte außerdem, dass dein Skript anfällig für SQL-Injection ist.

Da hatte ich schon was geschrieben: Da ich momentan der einzige Nutzer der Datenbank bin, hab ich auf die überprüfung der Eingabe(escapen) verzichtet,

das ist eine ganz schlechte Idee mit einer fehlerhaften Begründung.

da ich erst mal die grundlegende Funktion herstellen will.

Das einfachste von der Welt ist es, Daten *nie* für den Kontext aufzubereiten, in dem sie verwendet werden. Dann fällt man halt ziemlich oft auf die Schnauze.

Das zweiteinfachste von der Welt ist es, Daten *immer* für den Kontext aufzubereiten, in dem sie verwendet werden. Dann fällt man *nie* auf die Schnauze.

Das komplizierteste von der Welt ist es, zu überlegen, wann man auf die kontextgerechte Behandlung verzichten kann. Dann fällt man nach Murphy genau dann auf die Schnauze, wenn man es am wenigsten gebrauchen kann.

Wenn Du also Deine ersten Gehversuche mit MySQL und PHP ausgerechnet mit den veralteten und wenig leistungsfähigen mysql_*-Funktionen machen willst, dann benutze mysql_real_escape_string(), um Deine Werte kontextgerecht aufzubereiten. Ach ja, gegebenenfalls musst Du noch die Magic Quotes vorher entschärfen.

Diese guten Ratschläge kannst Du im Forumsarchiv hundertfach nachlesen, eine kleine Erläuterung der kontextgerechten Behandlung von Werten für Einsteiger hab' ich erst vor ein paar Tagen geschrieben (zwar nicht für MySQL, aber das spielt keine Rolle).

Ach so noch eine Bemerkung: Selbstverständlich solltest Du Deine Ausgabe für den HTML-Kontext aufbereiten, so wie Du das im verlinkten Beitrag nachlesen kannst.

Wir wären hier ganz schlecht beraten, wenn wir Dich nicht auf diese grundlegenden und extrem schwerwiegenden Fehler aufmerksam machten. Beachte sie und Du wirst es später Dir selbst danken.

Freundliche Grüße

Vinzenz