mysql injections(codeeingabe) verhindern

Kerwin

Erfahrenes Mitglied
Hallo,

Ich habe mir neulich mal nen bissel gedanken darum gemacht wie man Codeeingaben per Inputfelder/Textareas verhindern kann.
Darauf gestoßen bin ich, als ich mein PN Sytsem mal online getestet hatte und dort alle Beiträge mit " nicht in die DB gespeichert wurden was aber offline irgendwie trotzdem ging.
Da ich sowas schon mal irgendwie gehört hatte, habe ich auch gleich mal probiert php code in so einem Feld einzugeben und tatsache, mysql injection war möglich.
Was kann man effizient zuen um dies zu vermeiden?
 
Strings in [phpf]mysql_escape_string[/phpf],
Ganzzahlen in [phpf]intval[/phpf] und
Kommazahlen ind [phpf]doubleval[/phpf] einfassen.

snuu
 
Danke für die Antwort wozu ich aber noch 1 Frage habe.

Nach dem lesen von mysql_escape_string() ist mir die Funktionsweise klar, man kann in einem Inputfeld den String oder was auch immer nicht mehr mit " unterbrechen da er nen \ davorhaut.

Wozu brauche ich dann aber intval(), doubleval() wenn ich den Sting eh nicht mehr unterbrechen kann?


//edit

es gibt ja noch sone tolle funktion wie addshlashes die da ebenfalls vor " nen \ setz. Wo ist da dann eigentlich der Unterschied?
 
Zuletzt bearbeitet:
Um sicher zu stellen, dass es sich um eine Zahl handelt. Sonst könnte man zum Beispiel in ein Feld, in dem eine Preisangabe erwartet wird auch eine Zeichnkette reinschreiben, die das SQL-Statement modifiziert.

snuu
 
Achso.
Nur in wie fern ein mysql Statement ändern. Meinste damit ne Injection? DIe würde ja sowieso unterbunden werden wenn ich escape mache.

Aber in diesem Punkt. Es ist ja auch irgendwie möglich, das wenn ich
$a= '10 eier';
$b= 5;
$c=$a*$b;
eingebe das Ergebnis 50 ist. Wird das damit unterbunden( mit int/double val)?
 
Original geschrieben von Kerwin
Aber in diesem Punkt. Es ist ja auch irgendwie möglich, das wenn ich
$a= '10 eier';
$b= 5;
$c=$a*$b;
eingebe das Ergebnis 50 ist. Wird das damit unterbunden( mit int/double val)?
Argh. In jeder vernünftigen Programmiersprache würdest so bei dem Code n Fehler bekommen ;) Wäre PHP nicht so schlampig, dann würde man nämlich nicht so einfach einen String mit einem Integer multiplizieren/vergleichen/oder sonst was machen.

Wenn schon dann bitte:
PHP:
$a = '10 eier';
$b = 5;
$c = intval($a)*intval($b);
 
Zurück