Hi,
Ich möchte gern den Mime-Type beim Upload von Dateien feststellen.
das ist prinzipiell nicht möglich, ohne den Dateiinhalt zu interpretieren.
Ich weiß, dass der Browser diesen im $_FILES array mitteilt, das ist mir jedoch zu unsicher.
Richtig. Die Angabe kann richtig sein, aber es gilt: All input is evil.
Und Informationen, die der Client liefert, sind grundsätzlich nicht vertrauenswürdig.
Ebenfalls zu unsicher ist mir die Herangehensweise, dass man den Dateinamen nur auf Extension überprüft und von dieser dann auf den Mime-Type schließt (denn, was passiert, wenn der Benutzer einfach die Dateiendung einer .htm-Datei in .mp3 oder .jpg ändert?)
Du sagst es. Namen sind Schall und Rauch.
Bitte um Hilfe und adäquate Lösungsansätze!
Vermutlich geht es dir nur darum, bestimmte Dateitypen auszuschließen oder umgekehrt nur bestimmte Typen zuzulassen. Definiere oder recherchiere also die Merkmale, an denen diese Dateien eindeutig identifizierbar sind.
Oft genügt es schon, die Namen (Extensions) zu überprüfen, da der Webserver seinerseits den MIME-Typ meist auch nur anhand des Namens bestimmt. Manche Typen kann man leicht erkennen - z.B. beginnt eine PDF-Datei immer mit dem String "%PDF", eine Bilddatei liefert bei der Untersuchung mit getimagesize() plausible Werte.
Präzisiere also deine Anforderungen.
Ciao,
Martin
Wissen erwirbt man, indem man immer das Kleingedruckte sorgfältig liest.
Erfahrung bekommt man, indem man das nicht tut.