Mailinglisten-Archive |
Armin Briatta wrote: > 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? Ja, oder eben das null-Byte durch etwas anderes zu ersetzen. Gleichzeitig werden bei urlrawencode natürlich auch noch so unpraktische Sachen wie Leerzeichen eliminiert. > > 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? Natürlich :-). > > Liebe Grüße > Armin Yannik
php::bar PHP Wiki - Listenarchive