Robert Bienert: Dateityp wie am besten prüfen?

Beitrag lesen

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