Johannes Zeller: md5 insert?

Beitrag lesen

Hallo bleicher,

kann in $bla=md5($_POST['dings']) wenn 'dings' ein Formulareingabe ist etwas reingschleust werden? PHP_code-insertion oder änliches?

Wenn ich eine Variable $foo = "'; rm *; echo '" erstelle, ist das erstmal völlig ungefährlich; es handelt sich um einen String wie jeder andere, denn dies wird dabei ja nicht als Befehl ausgeführt. Aufpassen musst du nur, wenn du mit dem Inhalt der Variable etwas tust, beispielsweise ihn als Argument für ein Shell-Programm zu verwenden, das kann dann böse enden:

exec("echo '$foo'"); # Löscht alle Dateien in dem Verzeichnis!

Deswegen musst du in solchen Fälle die entsprechenden Escape-Funktionen verwenden, hierbei wäre das [escapeshellarg().

[code lang=php](http://www.php.net/escapeshellarg)exec("echo ".escapeshellarg($foo)); # Harmlos[/code]

Bei Dingen wie Datenbank-Abfragen oder Ausgabe als HTML ist es natürlich ähnlich, im Wesentlichen müssen lediglich andere Escape-Funktionen verwendet werden.

Das heißt, das dein Befehl, so wie er da steht, völlig harmlos ist. Der einzige Angriffspunkt ist, wie Rouven schon sagte, dass dein Besucher eine Zeichenkette kennt, der MD5-Hash "<etwas-böses>" ist, eine sehr unwahrscheinlich Situation. Aber auch dann ist das nur wirklich gefährlich, wenn du $bla in einem entsprechenden Kontext verwendest, ohne es richtig zu maskieren.

Schöne Grüße,

Johannes