Sven Rautenberg: Ist folgende Überprüfung möglich?

Beitrag lesen

Moin!

Ich hab ein Formular und will die Eingaben "sicher" machen per
htmlspecialchars() und mysql_escape_string().

Das Anwenden dieser Funktionen bringt nicht automatisch Sicherheit. Man muß schon wissen, was man da tut.

Dazu habe ich ein array mit den Namen der Felder, danach wird jedes Überprüft.

$feld = array('1'=>'nick','2'=>'name','3'=>'email','4'=>'super','5'=>'toll','6'=>'pwd','7'=>'pwd2','8'=>'branche','9'=>'eingabe');

Wenn du ein numerisch indiziertes Array willst, dann zähle die Elemente einfach auf:

$feld = array('nick','name','email','super','toll','pwd','pwd2','branche','eingabe');

foreach($feld as $key=>$element){

Wenn du ein Array mit foreach durchgehst, und den Schlüssel nicht brauchst, dann lass ihn einfach weg:

foreach ($feld as $element)

$$element=htmlspecialchars(mysql_escape_string($_POST["$element"]));

Wann immer du angeblich "variable Variable" zu benötigen glaubst, ist der Einsatz eines Arrays wesentlich besser: Fehler überschreiben dir nicht unabsichtlich ganz andere Variablen, die Fehlersuche und das Debugging sind leichter, der Code ist übersichtlicher.

Abgesehen davon willst du in deinem Code Dinge tun, die man so nicht tun sollte. Die Anwendung von mysql_real_escape_string() soll erfolgen direkt vor der Zusammensetzung des SQL-Strings.

Die Anwendung von htmlspecialchars() soll erfolgen direkt vor der Ausgabe des Textes an den Browser bzw. den HTML-Kontext.

Beides auf Vorrat, kombiniert und auch noch falsch verschachtelt zu realisieren ist ziemlicher Unsinn.

Das einzige was mir sorgen macht ist das $$element. Das kann i-wie nciht richtig sein aber ich weiß nicht wie ich sonst folgendes erreiche:

Aus jedem $element soll eine Variable $."$element" werden parktisch

Nutze ein Array: $post_escaped[$element]=mysql_real_escape_string($_POST[$element]);

Man beachte: die Variablen werden nacher noch weiterverwendet/verarbeitet ( in datenbank geschrieben, ggf. verschlüsselt u.s.w.). Ist das überhaupt möglich oder muss ich nacher jedes einzelnd hin schreiben?

Wenn du übersichtlichen Code wünschst, nimmst du entweder die Arrayversion oder listest alle Variablen einzeln auf.

- Sven Rautenberg

--
"Love your nation - respect the others."