PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   selfphp File_upload Tutorial und ermitteln des mime-types (http://www.selfphp.de/forum/showthread.php?t=26082)

Paykoman 28.12.2017 10:54:34

selfphp File_upload Tutorial und ermitteln des mime-types
 
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?) ).

chorn 29.12.2017 12:16:01

AW: selfphp File_upload Tutorial und ermitteln des mime-types
 
Also das erste Beispiel ohne das $finfo funktioniert bei mir, das native mime_content_type() nimmt ja auch nur einen Parameter entgegen. Das schmeisst dann auch einen Fehler. (exactly one parameter required, two given)

Paykoman 06.01.2018 08:53:35

AW: selfphp File_upload Tutorial und ermitteln des mime-types
 
Nun gut, inzwischen hatte ich anderes zu erledigen aber jetzt ging es wieder an dieses Thema.

Ist etwas verwirrend warum im Tutorial da extra eine Instanz öffent und in einer Variable ablegt.

In meinem Test war jetzt:
PHP-Code:

$mime_type mime_content_type($_FILES['file']['tmp_name']);
echo 
'finfo result: '.$_FILES['file']['tmp_name'].' -> 'var_dump($mime_type);
// result : finfo result: /tmp/phpvvlkNA -> string(9) "image/png" 

ausreichend, kann man das so dann im Produktivsystem einsetzen oder muss da noch was beachtet werden?

MfG: Paykoman

chorn 08.01.2018 14:31:16

AW: selfphp File_upload Tutorial und ermitteln des mime-types
 
Um den Mimetype einer Datei in einem komischen Format, und den Pfad deines TMP-Verzeichnisses auf deinem Produktivsystem zu exposen kannst du das benutzen, ja.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:05:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.