Upload: Dateitypproblem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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!
    Last edited by ZeitenWandel; 04-07-2007, 23:14.

  • #2
    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)
    Last edited by penizillin; 04-07-2007, 23:18.

    Comment


    • #3
      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

      Comment


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

        Comment


        • #5
          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?

          Comment


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

            Comment


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

              Comment


              • #8
                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?

                Comment


                • #9
                  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/

                  Comment

                  Working...
                  X