Der Martin: Bildupload mit Typ-Beschränkung

Beitrag lesen

Hallo,

Versuche stattdessen lieber, mit getimagesize() aus der gd-lib die Bildgröße zu bestimmen. Bei identifizierbaren Bildformaten (GIF, PNG, JPEG) kommen plausible Werte raus.
Das könnte gefährlich sein, sich nur auf die Ergebnisse von getimagesize zu verlassen, zumal es möglich ist, PHP valide etwa in PNG-Kommentare einzuschleusen.

Lass mich überlegen ...

1. Ich lade eine Datei mit der Extension "png" hoch. Die wird von getimagesize() als PNG-Grafik erkannt und akzeptiert. Wenn irgendein Client sie später wieder anfordert, wird sie als image/png ausgeliefert. "Niemand" wird PHP-Code interpretieren, der eventuell in den Meta-Daten steht. Der Server nicht, weil die Datei nicht auf ".php" endet, und der Client sowieso nicht, weil er kein PHP kennt.

2. Ich lade eine Datei mit der Extension "php" hoch, die einen gültigen PNG-Header hat, auf den aber irgendwo "<?php" und PHP-Code folgt. Dieser PHP-Code würde dann tatsächlich ausgeführt.

Okay, im Fall 2 hast du Recht. File Extensions, die auf dem Server eine bestimmte Spezialfunktion haben, müssen aus Sicherheitsgründen abgewiesen werden.

Dann bedarf einer einfachen Local File Inclusion

Das braucht's nicht einmal - der Schadcode kann direkt in der hochgeladenen Datei stehen.
Danke für deinen wertvollen und wichtigen Hinweis!

So long,
 Martin

--
Abraham sprach zu Bebraham: Kann i mal dei Cebra ham?