Hi,
* Erzeuge mit einem Programm deiner Wahl darin einen EXIF-Eintrag mit folgendem Inhalt:
<?php header("Content-Type: image/jpeg"); fopen("0","w"); ?>
Das liest sich spannend. Hast Du es auch ausprobiert?
ja, allerdings mit Einschränkung: Ich hatte kein Programm zur Hand, das EXIF-Daten bearbeiten kann, musste also mit einem vorhandenen EXIF-Eintrag in einer JPEG-Grafik vorlieb nehmen, den ich einfach mit einem Hex-Editor modifiziert habe. Der war aber nicht lang genug (der EXIF-Eintrag, nicht der Hex-Editor *g*), so dass nur für
<?php fopen("demo","w"); ?>
genug Platz war. Damit wurde das Bild natürlich mit dem fehlerhaften Content-Type "text/html" ausgeliefert, das war meinem IE aber egal. Er erwartete ein Bild, also hat er die ankommenden Daten als Bild interpretiert.
Was sagt der PHP-Parser dazu, wenn er im vermeintlichen Nicht-PHP-Teil nicht druckbare Zeichen, insbesondere < 32d oder > 127d vorgesetzt bekommt?
Nichts, warum sollte er? Er reicht sie genauso durch, wie er jedes auch andere Nutzzeichen außerhalb eines PHP-Blocks einfach durchreicht.
Interessiert ihn das überhaupt, solange nicht seine Start- oder Stoppsequenz darin enthalten ist?
Nicht die Bohne.
Vermutlich hast Du Recht.
Das ist dann ja *ibäh*
Allerdings. Das ist mir aber auch erst seit relativ kurzer Zeit so klar. Daraus habe ich schon die Konsequenz gezogen, dass bei einem Bildupload die von mir bisher so gelobte Plausibilitätsprüfung mit getimagesize() nicht ausreichend ist; ich muss zusätzlich noch sicherstellen, dass in dem Verzeichnis, wo die Bilder letztendlich liegen, kein PHP oder etwas Vergleichbares ausgeführt wird. Das Beschränken der erlaubten Datei-Extensions auf typische Werte wie "jpeg", "jpg", "gif" oder "png" wäre eine Möglichkeit, aber nicht immer die günstigste.
Ciao,
Martin
Mir geht es gut. Ich mag die kleinen Pillen, die sie mir dauernd geben.
Aber warum bin ich ans Bett gefesselt?