Moin,
Die Dateien sollten doch im upload_tmp_dir landen und wenn dieses außerhalb des doc_root liegt (wovon ich ausgehe), sollte doch niemand darauf zugreifen koennen, zumal die temporaere Datei automatisch wieder geloescht wird.
Es geht darum dass du nicht mal im Ansatz überprüfst ob die Datei die in der Datenbank landet wirklich hochgeladen wurde (oder hab ich den supergenialen Trick der das bewerkstelligt übersehen?).
Wenn ich nichts besseres zu tun hab, rufe ich das Skript mit skript.php?action=indb&datei=/etc/passwd auf und schon ist die Systempasswortdatei in der Datenbank und kann von dort aus evt. ausgelesen werden. Auf diese Art kann ich dann _jede_ Datei lesen, auf die der Webserver Zugriff hat. Das sind neben der interessanten Passwortdatenbank evt. auch Konfigurationsdateien der verwendeten Skripte mit den darin enthaltenen Passwörtern, etc.
Nach dem erneuten lesen des Artikels (ist schon ein bisschen her, das ich das getan hab) gestehe ich aber, dass mein Hinweis nicht vollständig war. Die wichtigste Funktion die du benutzen möchtest wird in dem Artikel nämlich nicht erwähnt: http://www.php.net/manual/de/function.is-uploaded-file.php bzw. http://www.php.net/manual/de/function.move-uploaded-file.php.
Wenn du wirklich noch ein PHP älter als 4.0.3 benutzen musst, musst du dir die Funktionen evt. noch mit HTTP_POST_FILES (http://www.php.net/manual/de/language.variables.predefined.php#language.variables.predefined.php) selbst bauen. Aber die Dateien in keiner Weise zu überprüfen, ist imho grob fahrlässig und solche gefährlichen Skripts sollte man nicht ohne Hinweis auf diese Gefahr posten.
--
Henryk Plötz
Grüße aus Berlin