Upload: Dateitypproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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!
    Zuletzt geändert von ZeitenWandel; 05.07.2007, 00: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)
    Zuletzt geändert von penizillin; 05.07.2007, 00:18.

    Kommentar


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

      Kommentar


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

        Kommentar


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

          Kommentar


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

            Kommentar


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

              Kommentar


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

                Kommentar


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

                  Kommentar

                  Lädt...
                  X