Hallo Forum,
ich bin heute auf euer
Tutorial gestoßen und da ich meine Uploads eh noch validieren muss dachte ich mir gut, gehen wir es jetzt an!
Viele viele Sachen sind wirklich gut erklärt und sehr hilfreich, leider habe ich ein Problem mit dem ermitteln von MIME-Typen. Ihr habt da eine schöne Beispielklasse für den Fall das man nicht auf die finfo zugreiffen kann und falls doch leider nur ein sehr sehr kurzes snippet das nicht funktioniert!!!
PHP-Code:
if( !$finfo = finfo_open(FILEINFO_MIME_TYPE) ){ echo 'no func'; exit; }
$mime_type = mime_content_type($finfo, $_FILES['file']['tmp_name']);
finfo_close($finfo);
echo 'finfo result: '.$_FILES['file']['tmp_name'].' -> '; var_dump($mime_type); exit;
liefert: finfo result: /tmp/phpLTTq21 -> bool(false)
Ich habe dann natürlich noch ein wenig rum experimentiert, vor allem weil es mich verwundertder das '$finfo' nicht benutzt wird beim ermitteln.
PHP-Code:
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $finfo->buffer(file_get_contents($_FILES['file']['tmp_name'])); // $finfo->file($_FILES['file']['tmp_name']);
finfo_close($finfo);
echo 'finfo result: '.$_FILES['file']['tmp_name'].' -> '; var_dump($mime_type); exit;
Lieferte dann:
Code:
finfo result: /tmp/phpaQAIio -> string(10) "text/plain" // $finfo->file
finfo result: /tmp/phpvbShIL -> string(19) "application/x-empty" // file_get_contents
Nun wundert mich nicht das mansche "Löcher" in Ihr System haben wenn es einem so schwer gemacht wird diese zu stopfen.
Sinn und Zweck ist es ja die MIME zu ermitteln damit wir VOR dem verschieben in einen anderen Ordner an Hand von MIME eine Extension setzten können, offensichtlich fällt PHP dies aber schwer solange die Datei sich noch in dem php temporären Ordner befindet.
Über entsprechende Hilfe wäre ich sehr Dankbar.
MfG: Paykoman
PS: Es wird der EXIF-Header erwähnt und das dort nach wie vor Schadcode enthalten sein kann aber nicht den Hauch eines Ansatzes um was dagegen zu tun... Ist Datei-technisch nicht möglich es heraus zu filtern oder gilt der Ansatz die Dateien entsprechend nicht ausführbar machen (CHMOD + Direktaufruf ausschließlich Medium darstellen und unterdrücken von z.B. php code(wie?) ).