gambler
Themenersteller
Student
Guru (101 Beiträge)

Bilder-Upload absichern - PHP

am 29.07.2010, 19:40 Uhr eröffnete gambler folgenden Thread
PHP & MySQL    2537 mal gelesen    1 Antwort(en).

Hey PHP-Profis,

zurzeit (versuche) ich grade einen sicheren Bilder-Upload mit PHP zu entwickeln und wollte mal fragen, ob ihr noch irgendwelche Tipps habt.

Im Moment sichere ich den Upload wie folgt ab:

1. Bild-Datei wird auf eine richtige Endung hin überprüft (.jpg, .gif usw.)

2. Content-Type bzw. MIME-Type ist clientseitig richtig gesetzt (image/jpeg, image/gif usw.) - die clientseitige Prüfung mache ich über $_Files['image']['type'] - da man dieses ja leicht ändern kann z.B. mit Firefox AddOn LiveHeaders überprüfe ich als nächstes serverseitig

3. serverseitigen Content-Type, wobei ich über Fileinfo von PHP den Content-Type der Datei abfrage - auch hier das Problem, dass ich z.B. eine PHP-Datei als .png abspeicher und einfach den PNG-Header vor dem PHP-Code in die Datei einfüge -> dadurch wird von Fileinfo der MIME-Typ als image/png erkannt

4. mit getimagesize() prüfen, ob korrekte Werte im zurückgegebenen Array vorhanden sind

Joah, das erst mal das was ich so bezüglich Sicherheit gemacht habe, aber was mir Sorgen bereitet ist das MIME-Type-Guessing vom IE (wobei es im IE8 wohl nicht mehr ist).
Ich könnte eine ganz normales PNG-Bild hochladen, jedoch mit präparierten Kommentar, welches z.B. <html>Javascript-Code</html> enthält. Wenn dieser Kommentar nun innerhalb der ersten 256Bytes steht, dann verwirft der IE einfach den PNG-Header und überträgt es als HTML. Lade ich dieses Bild nun hoch und rufe es direkt über den Browser auf, dann sehe ich bei Firefox, IE8 etc. das Bild, aber im IE7(abwärts) wird der Javascript aufgerufen.

Da der IE7 doch noch von relativ vielen genutzt wird, würde ich das gerne abgesichert wissen. Ich weiß nur nicht was hier sinnvoll erscheint?! Mittels regulären Ausdrücken einfach gucken, ob ein script-Tag vorhanden ist, würde mir am ehesten einfallen.

Also vielleicht habt ihr noch Tipps oder Hinweise?

Gruß Stephan


Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 29.07.2010, 19:54 Uhr schrieb romacron

Kurz und schmerzlos.

Jede Datei die raufgeladen wird und nicht geprüft ist, umbenennen.
bilchen.jpg.txt. (oder ähnliches)

So ist die schon mal nicht als Bild aufrufbar.

Den Ordner(wo die geladenen Bilder gespeichert werden) mit einer .htaccess versiegeln. Dann sind die Uploads nicht über den Browser aufrufbar


  • 1


« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.