Hello,
Die Bilder sollten z.B. mit getimagesize()
http://de3.php.net/manual/en/function.getimagesize.php
darauf geprüft werden, ob sie eine gültigen Bildtyp enthalten.
(Da kann immer noch ein Virus oder ein Script drin versteckt sein, aber das ist dann ohne weiteres nicht lauffähig)
Un dann sollte das Verzeichnis, in dem die Bilder abgelegt werden, kein PHP ausführen
### .htaccess
php_value engine off
oder noch besser, diese Direktive im Virtual-Host-Container vornehmen
php_admin_value engine off
Und wie man aus dem Beispiel mit .htaccess sehen kann, muss man auch sicherstellen, dass einem niemand eine .htaccess-Datei hochladen kann und auch keine php.ini Es wäre ja leicht, Bildern einfach diesen Namen zu geben und schon wären eventuell die Originale überschrieben.
Solltest Du also ein .htaccess-Datei benutzten sollte die auf jeden Fall schreibgeschützt sein für den normalen PHP-Prozess.
Die Namen der Bilder, die der Client liefert, solltest Du auch nicht übernehmen. Mindestens müssen sie aber geprüft werden, ob keine Pfade enthalten sind und wenn der Name schon vorhanden ist, sollte das nicht ohne "Überschreiben-erwünscht-Checkbox" möglich sein für diejenigen User, die das dürfen.
Wenn mehrere User hochladen dürfen, daher entweder für jeden ein eigenes Ablageverzeichnis OHNE ENGINE, oder z.B. die Usernummer voranstellen -> 13548.bildname.jpg
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg