PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Upload: Dateitypproblem (https://www.php-resource.de/forum/php-developer-forum/85258-upload-dateitypproblem.html)

ZeitenWandel 05-07-2007 01:12

Upload: Dateitypproblem
 
Hallo liebe Foreumsbenutzer.
Ihr seid meine letzte Rettung. Ich habe schon alles durchforstet, was das Internet hergibt. Ich komme zu keinem Ergebnis. Das Problem lässt sich einfach nicht beheben :(
Erstmal zum Problem: Bei meinem Uploadscript sollte standardmäßig eine Dateitypüberprüfung stattfinden.
Diese sieht so aus:
PHP-Code:

$file $_FILES['userfile']['name']; 
                        
$path_parts pathinfo($file); 
            
$filename "datei_" time() . "." $path_parts["extension"]; 
            
$extension strtolower($path_parts["extension"]);
            if(
$extension != "jpg" || 
$extension != "jpeg" || 
$extension != "gif" || 
$extension != "psd" || 
$extension != "bmp" || 
$extension != "png"){
                echo 
'<div class="error">
Das ist ein unerlaubter Dateityp!</div>
<br /><a href="index.php"><img src="undo.png" border="0" /> 
Zum Upload</a>'
;
                exit;
            } 

Wenn ich nun eine .png Datei hochlade, erscheint der Fehler, dass diese Endung unerlaubt sei. Habt ihr vielleicht eine Ahnung, woran es liegen könnte?
Ich würde mich riesig über die Hilfe freuen. Ihr seid echt meine letzte Rettung :(

Vielen Dank im Vorraus, Florian!

penizillin 05-07-2007 01:13

http://www.php-resource.de/forum/sho...threadid=50454

das verhalten ist korrekt.
was du willst, ist

Code:

nicht (a oder b oder c)
welches äquivalent ist zu
Code:

(nicht a) und (nicht b) und (nicht c)

ZeitenWandel 05-07-2007 01:27

Oh man, auf die Antwort bin ich noch gar nicht gekommen.
Es klappt.
So sieht der Code aus:
PHP-Code:

if (!($extension == "jpg" || 
$extension == "jpeg" || 
$extension == "gif" || 
$extension == "psd" || 
$extension == "bmp" || 
$extension == "png")){ 

Ich bedanke mich recht herzlich bei dir, penizillin :)

penizillin 05-07-2007 01:42

beachte den mime typ der dateien, und nicht deren namen. der name kann schließlich beliebig manipuliert werden.

ZeitenWandel 05-07-2007 02:00

Habs bereits umgeschrieben, aber danke für den Tipp:
PHP-Code:

if (!($_FILES['userfile']['type'] == "image/jpg" || 
$_FILES['userfile']['type'] == "image/jpeg" || 
$_FILES['userfile']['type'] == "image/gif" || 
$_FILES['userfile']['type'] == "image/psd" || 
$_FILES['userfile']['type'] == "image/bmp" || 
$_FILES['userfile']['type'] == "image/png")){ 

Sind da sonst noch irgendwelche Lücken drin?

penizillin 05-07-2007 02:08

google mal nach pjpeg.
und vergiss nicht, dass auch das keine vollkommene sicherheit bietet, denn auch content-type kann manipuliert werden.

pekka 05-07-2007 02:27

Besser:
http://de3.php.net/manual/en/functio...-imagetype.php

ZeitenWandel 05-07-2007 04:43

Zitat:

Original geschrieben von pekka
Besser:
http://de3.php.net/manual/en/functio...-imagetype.php

Das werde ich mir morgen mal anschauen.
Ist das wenigstens sicher?

matz0r 05-07-2007 11:35

Ich würde prinzipiell auch mit getimagesize() prüfen ob er was anständiges zurückliefert.

Exploit dafür gabs auch mal, hoffe aber der ist mittlerweile gefixt ;)

http://ha.ckers.org/blog/20070604/pa...-getimagesize/


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:50 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG