phpbar.de logo

Mailinglisten-Archive

[php] Prüfung nach Dateiupload per Formular

[php] Prüfung nach Dateiupload per Formular

Armin Briatta austausch at briatta.de
Mon Nov 12 22:12:30 CET 2007


Hallo Yannik,

Yannik Hampe schrieb:

> Nein, denn:
> Wenn der Dateiname vom Client ein null-Byte enthält (xyz.php%00.txt)
> Dann wird dir php bestätigen, dass der Dateiname auf .txt endet. Beim 
> verschieben der Datei geht alles ab dem nullbyte verloren.
> Um das mal zu verdeutlichen:
> ----
> %php -a
> Interactive shell
> 
> php > echo bin2hex("a\0b");
> 610062
> php > var_dump(file_exists("a"));
> bool(false)
> php > touch("a\0b");
> php > var_dump(file_exists("a"));
> bool(true)
> ----
> Wenn du kannst solltest du die Dateien in einem Ordner speichern, der 
> für den Webserver nicht zugänglich ist und die Datein umbenennen (zum 
> Beispiel mit Hilfe einer id aus einer DB oder mit uniqid. Oder du 
> wendest einmal rawurlencode() auf die Funktion an:
> ----
> php > echo rawurlencode("a\0b");
> a%00b
> ----


das mit dem null-Byte habe ich jetzt hoffentlich verstanden. Den 
Vorschlag mit rawurlencode() noch nicht. Geht es nicht darum, das 
null-Byte zu entfernen?

Könnte ich nicht auch den string aus $_FILES['filename']['name'] in 
einer Variaben speichern, diese daraufhin abklopfen, ob ein solches 
null_Byte enthalten ist und dann entsprechend die weitere Verarbeitung 
mit move_uploaded_file untersagen?

Liebe Grüße
Armin



-- 
Armin Briatta
Fotografie und Webdesign

Kirchbergweg 2
64367 Mühltal-Trautheim
(0173) 6 54 97 10
www.briatta.de

php::bar PHP Wiki   -   Listenarchive