Dateityp wie am besten prüfen?
muenzchen
- php
0 Robert Bienert0 Tom
Hallo,
Momentan überprüfe ich bei einem File Upload per $_FILES['filename']['type'] um welchen Dateityp es sich handelt. Das Problem bei dieser Variante ist aber, dass jeder Browser eine andere Bezeichnung für die Dateien mitschickt, sodass ich mich jetzt auf einige Bild und Zip Dateien beschränken musste damit ich nicht 100e Dateityp Angaben machen muss. Ich würde aber gerne mehr Dateitypen erlauben und frage mich, ob es sinnvoller ist nur die Dateiendung nach dem letzten Punkt zu prüfen. Oder ist das eher unsicher, können dadurch schädliche Dateien auf den Server gelangen?
MfG, muenzchen
Hallo,
Moin!
Momentan überprüfe ich bei einem File Upload per $_FILES['filename']['type'] um welchen Dateityp es sich handelt. Das Problem bei dieser Variante ist aber, dass jeder Browser eine andere Bezeichnung für die Dateien mitschickt,
Naja, sagen wir es mal so: Nicht jeder Browser kennt sämtliche MIME-Typen von Dateien auf dem jeweiligen System. AFAIK ist aber der Standardtyp immer application/octet-stream, also "alles". Der Wert in 'type' ist die Meinung des Browsers, welchen MIME-Typ ein Anhang hat. Aus der Erfahrung heraus kann ich sagen, dass der Mozilla momentan der einzige ist, der die meisten Typen "kennt", keine Ahnung, ob er dazu vom System den Dateityp ermittelt.
sodass ich mich jetzt auf einige Bild und Zip Dateien beschränken musste damit ich nicht 100e Dateityp Angaben machen muss.
Was sollen die Leute denn alles hochladen dürfen?
Ich würde aber gerne mehr Dateitypen erlauben und frage mich, ob es sinnvoller ist nur die Dateiendung nach dem letzten Punkt zu prüfen.
Naja, das ist die Methode, die Windows verwendet um herauszubekommen, was für ein Dateityp es ist. Das mag auch in 99,9% der Fälle hinhauen, aber genau dieses 0,1% ist es dann, weshalb sich ein IE-Benutzer einen Wurm in einer *.jpg Datei lädt. Es gibt für den Fall den du suchst die Funktion mime_content_type(string datei), die dir den MIME-Typ von datei zurückliefert, ansonsten könntest du das Unix-Programm file aufrufen, dass ermittelt den Inhaltstyp einer Datei, mit dem Parameter -i sogar als MIME-Typ.
Oder ist das eher unsicher, können dadurch schädliche Dateien auf den Server gelangen?
Für den Server ist das solange sicher, bis jemand die Möglichkeit erlangt deine Anhänge auszuführen, was normalerweise nicht möglich ist.
MfG, muenzchen
HTH, Robert
Naja, ich habs jetzt so gelöst, dass neben Bildern nur gepackte Dateien hochgeladen werden dürfen.
Hello,
das ist hier schon 334 Mal besrpochen worden!
Vertraue keinem Browser, es könnte ja auch ein Server sein, der nur Browaer spielt. Mime-Types sind also ganz leicht fälschbar.
Benutze für Bilder z.B. getimagesize() oder auf Linuxsystemen das Systemprogramm file , das sich über system() aufrufen lässt, Sollte der safe_mode bentuzt werden, muss das Programm im safe_mode_exec_dir liegen.
Liebe Grüße aus http://www.braunschweig.de
Tom