Kurzfassung:
Wie kann ich mich bei POST Daten in PHP gegen SQL Keywords, HTML Tags und Escape Zeichen schützen?
ausführliche Beschreibung:
Ich hab php Klassen für html input felder ("text", "dropdown", "checkbox") erstellt. Die Klassen finden immer anhand einer id die richtigen POST Variablen, die zu ihnen gehören und speicher und überprüfen diese auch.
Ich weiß wie ich überprüfe ob eine Variable ein bestimmter php Typ ist. Das mach ich so:
- Code: Select all
if($_POST[<was immer>] == (string)(integer)$_POST[<was immer>])
return true;
Indem ich die Post <was immer> zweimal caste kann ich so feststellen, ob in der POST Variable ( die ja immer ein string ist ) ein gültiger integer wert enthalten ist.
So lässt sich gut "integer", "bool" und "float" bestimmen.
Aber das Problem ist jetzt, das meine Klassen so lange die falsche eingabe wider ins Formular schrieben bis sie der Benutzer zu einer richtigen korrigiert hat.
Nun dachte ich wenn der Benutzer einen den PHP datentyp string eingeben soll, dann kann er eigentlich nichts falsches eingeben. Das Problem ist jetzt nur wenn einmal ein "\" eingegeben wird werden es nachdem das formular nach einer falschen eingabe, in vieleicht einer anderen Klasse, erneut geladen wurde, also alle Post Variablen nocheinemal mit dem Formular zurückgeschickt wurden zwei "\\" und dann vier "\\\\" und dann acht "\\\\\\\\" usw... je oft das formular neu geladen wird.
Ausserdem wie kann ich mich gegen html Tags und SQL Keywords schützten?
Danke!