Tom: File-Upload richtig planen und programmieren

Beitrag lesen

Hello Ben,

Wenn Du einen Fileupload über HTTP vornimmst und ihn von PHP bearbeiten lässt, dann legt das PHP-System ein "php-temporäres" File auf dem Fileserver im in der INI (oder an anderer Stelle) festgelegten Stelle an.

Wenn das Cript endet, wird sie automatisch gelöscht. Das funktioniert so sehr gut, dass ich bei einem "CMS", das ca. vier Jahre durchgehend lief, keine einzige vagabundierende Datei bekommen habe.

Nach dem Upload einer Datei solltest Du als erstes

$_FILES[$user_upload_field_name]['error']

überprüfen.

Wenn ['error'] === 0 ist, wurde genau ein File ordnungsgemäß hochgeladen
Wenn ['error'] ein Array ist, wurden mehrere Files hochgeladen. Dann musst Du die Prüfungen mit allen

$_FILES[$user_upload_field_name]['error'][$n]

vornehmen.

Weiterhin solltest Du den MIME-Type der Datei prüfen lassen, und zwar bitte von einer geeigneten Funktion auf dem Server, und _NICHT_ einfach durch Nachsehen in

$_FILES[$user_upload_field_name]['type']
oder
  $_FILES[$user_upload_field_name]['type'][$n]

Dort steht nur der vom Client mitgelieferte MIME-Type-Bezeichner drin, und der kann nach belieben gefälscht sein. Geeignet ist die Funktion

http://www.php.net/manual/de/function.mime-content-type.php

oder die in der Beschreibung bezeichnete Nachfolgelösung.

BTW: Mir ist immer noch schleihaft, warum die PHP-Entwickler eine derartig wichtige Funktion noch nicht "repariert" haben und fest in den Sprachbestand aufgenommen haben.
Hier handelt es sich um die häufigste Sicherheitslücke, die es in PHP-Systemen gibt, wenn der MIMIE-Type von uploaded Files nicht überprüft wird.

Alternativ kannst Du auch

http://www.php.net/manual/de/function.getimagesize.php

und seine Brüder benutzen, wenn es um die Überprüfung von Bilduploads geht.

Weitere Hinweise unter

http://www.php.net/manual/de/features.file-upload.php

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau