| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: MimeType evaluation im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Guten Morgen. Seit längerem nun steh ich vor dem Problem einer sauberen MimeType-Überprüfung in PHP. Das Problem dabei ist nicht ...
![]() |
| | #1 (permalink) |
| Registriert seit: 07.05.07 ![]() Likes: 18 | MimeType evaluation Guten Morgen. Seit längerem nun steh ich vor dem Problem einer sauberen MimeType-Überprüfung in PHP. Das Problem dabei ist nicht die fehlende Funktionalität in PHP, sondern verschiedene unglückliche Parameter. Zum einen fehlt auf der von mir zu gebrauchenden Serverinstallation (Windows) das sogenannte "magic"-File. Somit fällt die Funktion PHP-Code: Code: Returns the MIME content type for a file as determined by using information from the magic.mime file. PHP-Installation nicht zur Verfügung steht. Womit diese Option auch wegfällt. Nun weitere sichere (und in PHP integrierte) Möglichkeiten gibt es m.E. nicht, oder seh ich das falsch? Die meisten weiteren Contributions im Netz drehen sich nur um die Analysation der file-extension. Zu erwähnen wäre vielleicht, dass ich keine system() / exec() absetzten kann & auch nicht will. Also hab ich mich drangemacht selbst eine kleine Lösung zu schreiben, mit welcher ich allerdings nicht ganz zufrieden bin. Prinzipiell ist es nur eine weitere Integration des magic.mime, aber seht selbst. PHP-Code: Code: array(1) {
[0]=>
array(10) {
[0]=>
string(2) "MZ"
[1]=>
string(1) "L"
[2]=>
string(4) "This"
[3]=>
string(7) "program"
[4]=>
string(6) "cannot"
[5]=>
string(2) "be"
[6]=>
string(3) "run"
[7]=>
string(2) "in"
[8]=>
string(3) "DOS"
[9]=>
string(5) "mode."
}
} Code: sheeep@foobar:~$ cat /etc/apache2/magic | grep MZ 0 string MZ application/x-dosexec 0 string MZ 0 string MZ 0 string MZ 0 string MZ 0 string MZ application/octet-stream magic beinhaltet teilweise auch byte-Überprüfungen wie die folgende: Code: >43 byte 0x14 application/ichitaro4 Auch gibt es Dateien (zB ein normales Textfile), welches mit dieser Methode nicht analysiert werden kann, da es bereits einen text/plain header besitzt und mir somit die wirkliche erste Zeile ausgibt. (Welche mit Sicherheit matcht )Zum anderen ist das magic-file 935 Zeilen schwer, was einen nicht zu übergehenden Aufwand für die Integration bedeuten würde Nun, kennt ihr weitere Möglichkeiten einen MimeType eines Files sicher zu finden? Oder sollte ich mich an dieser Lösung austoben? (Bzw: auf PHP6 warten PS: Mein Code ist nur ein POC, RegEx ist nicht ausgereift und keine Überprüfungen gemacht, sollte aber für die Idee reichen. Geändert von she3p (16.12.09 um 17:18 Uhr) |
| | |
| | #2 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | Was genau hast du denn vor? Wenn es z.B. darum geht bei einem Upload den MIME Type zu ermitteln, dann steht dir dafür in $_FILES das Element "type" zur Verfügung. |
| | |
| HaBOT | |
| |
| | #3 (permalink) | |
| Themenstarter Registriert seit: 07.05.07 ![]() Likes: 18 | Zitat:
![]() Even if: Einige Tests sagen mir; $_FILES['filename_here']['type'] prüft nicht sehr genau. Code: sheeep@foobar:~$ touch foo.exe Code: array(1) {
["foo"]=>
array(5) {
["name"]=>
string(7) "foo.exe"
["type"]=>
string(31) "application/x-ms-dos-executable"
["tmp_name"]=>
string(14) "/tmp/php8T9EJZ"
["error"]=>
int(0)
["size"]=>
int(0)
}
} Weiter im Text. Code: sheeep@foobar:~$ echo "this is me" > test.txt Code: ["type"]=> string(10) "text/plain" Code: sheeep@foobar:~$ mv test.txt test.pdf Code: ["type"]=> string(15) "application/pdf" ) | |
| | |
| | #4 (permalink) | |
| Registriert seit: 17.03.04 ![]() Likes: 1 | Zitat:
__________________ Mfg Basic Avid - Use it or be used! - | |
| | |
| | #5 (permalink) | |
| Themenstarter Registriert seit: 07.05.07 ![]() Likes: 18 | Zitat:
Code: $_FILES['userfile']['type'] The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted. | |
| | |
| | #6 (permalink) |
| Member of Honour ![]() | http://de2.php.net/manual/de/book.fileinfo.php finfo ftw das ist recht zuverlässig und leider erst aber der php5.3 direkt eingebaut. wird zeit, dass das bei debian mal standard wird.
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #7 (permalink) | ||
| Themenstarter Registriert seit: 07.05.07 ![]() Likes: 18 | Zitat:
Zitat:
| ||
| | |
| | #8 (permalink) |
| Member of Honour ![]() | sry, da habsch auch nicht richtig gelesen bliebe abgesehen von php5.3 noch die pecl lösung, was spricht gegen die?
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #10 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 60 | Gibt es eigentlich auch unter Windows eine zuverlässige Methode den Mimetype zu bestimmen?
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
| | #11 (permalink) | ||
| Themenstarter Registriert seit: 07.05.07 ![]() Likes: 18 | Zitat:
Zitat:
(halt eben wie bereits im Thread erwähnt | ||
| | |
| | #12 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 60 | Ich hatte meine Frage eigentlich nicht speziell auf PHP bezogen, sondern eher allgemein gestellt. Daher: Gibt es sowas auch für C?
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |