Hallo Tom,
Der Martin hat in diesen Artikel aber geschrieben dass dieser Test fälschlicherweise doch funktionieren kann.
Das kann ich nachvollziehen.
ich ergänze in Gedanken dein fehlendes "nicht".
Der HTTP-Header, also auch der mitgelieferte MIME-Type, werden nicht in der Datei gespeichert
Das spielt auch gar keine Rolle.
Dafür müsste uns Martin erst einmal ein Beispiel liefern.
Gut, dann mach mal folgendes:
* Nimm eine beliebige JPEG-Grafik
* Erzeuge mit einem Programm deiner Wahl darin einen EXIF-Eintrag mit folgendem Inhalt:
<?php header("Content-Type: image/jpeg"); fopen("0","w"); ?>
* Ändere den Dateinamen so, dass er auf *.php endet
Nun hast du ein potentiell gefährliches Werkzeug: Diese Datei geht, solange die Extension nicht berücksichtigt wird, bei sämtlichen Checks als gültige JPEG-Datei durch. Aber wenn sie von einem Webserver ausgeliefert wird, der diese Datei aufgrund der Extension .php durch den PHP-Parser jagt, wird der EXIF-Eintrag plötzlich als PHP-Code ausgeführt.
Ergebnis:
a) Die Ressource wird mit dem Content-Type image/jpeg ausgeliefert, ein typischer Browser merkt also nichts Verdächtiges.
b) Bei jedem Zugriff auf diese Ressource wird eine leere Datei mit dem Namen "0" erzeugt. Das dient zur zu Demonstration. Anstatt dieser einfachen fopen-Anweisung könnte auch ein komplexer PHP-Code stehen!
So long,
Martin
Du kannst dem Leben nicht mehr Tage geben.
Aber dem Tag mehr Leben.