kostenloser Webspace werbefrei: lima-city


[PHP]Bild Datetyp überprüfen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    t****y

    Also ich will bei meinem Avataruploadskript nur Bilder zulassen, die den Dateityp jpg,gif oder png haben.
    Da habe ich mir folgendes ?berlegt ;):

    if ($_FILES['datei']['filetype'] != "image/gif")

    dann error...

    Also der ?berpr?ft dann die Datei, ob sie "nicht" dem Dateityp "gif" entspricht und dann lasse ich eben ein error ausgeben, wie kann ich nun ?berpr?fen ob die datei nicht gif oder nicht jpg oder nicht png ist?
    Da geht es ja erstmal nur f?r gif.

    Und dann habe ich noch eine Frage, man k?nnte nat?rlich auch ?berpr?fen ob das bild die dateiendung .gif,.jpg oder .png hat. Aber k?nnte man nicht einfach eine php Datei in XXX.jpg umbennen und sich so irgendwelche Daten holen?
    Oder ist das mit der ?berpr?fung wie ich sie da vorsehe schon sicher?
    Oder kann man das php format irgendwie in ein bild ?ndern um dann Unfug zu treiben?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Zuallerst erst w?rde ich dir vorschlagen diese sinnlosen negationen zu unterlassen. ^^
    Schreib doch eifnach "if (sonwas == true) { ... } else { error }".
    Das kann man schneller nachvollziehen. ;-)

    Der Dateityp bei JPG oder PNG Bildern d?rfte so wie bei GIF Bildern sein. Also "image/jepg" oder "image/jpg" und "image/png".

    Die Dateiendung kannst du auch ?berpr?fen, solltest du auch, damit die Bilder nicht durch den PHP-Parser gehen k?nnen (wenn jemand bild.php hochladen w?rde).
    An sich werden Bilder nicht geparst, aber das kann man ?ber die htaccess-Dateien ?ndern. Vllt wird auch noch ein Bug dazu gefunden. Deshalb w?rde ich nur Bilder hochladen, die vom Typ Bild sind und auch von der Dateiendung eine "Bildendung" haben. Trotzdem kann immer noch dar?ber Code hochgeladen werden (es gab mal eine L?cke in der Darstellung von JPG in Browsern, wor?ber HTML "ausgef?hrt" werden konnte; da wurde in eine Bilddatei mit einer Bilddateiendung HTML-Code reingeschrieben und fertig...).
    Also das sicherste ist den Upload ganz zu unterbinden. ^^
    Aber mit den oben gennanten Sicherheitsvorkehrungen sollte es einigerma?en sicher von statten gehen.

    MfG Lucas
  4. Also, ich w?rde nur auf die Endung pr?fen, da ich damit schlechte erfahrungen gemacht habe.
    denn bei mir war es immer verboten bilder hochzuladen, egal ob gif, jpg, jpeg, png, oder php.
  5. Autor dieses Themas

    t****y


    Zuallerst erst w?rde ich dir vorschlagen diese sinnlosen negationen zu unterlassen. ^^
    Schreib doch eifnach "if (sonwas == true) { ... } else { error }".
    Das kann man schneller nachvollziehen. ;-)

    Der Dateityp bei JPG oder PNG Bildern d?rfte so wie bei GIF Bildern sein. Also "image/jepg" oder "image/jpg" und "image/png".

    Die Dateiendung kannst du auch ?berpr?fen, solltest du auch, damit die Bilder nicht durch den PHP-Parser gehen k?nnen (wenn jemand bild.php hochladen w?rde).
    An sich werden Bilder nicht geparst, aber das kann man ?ber die htaccess-Dateien ?ndern. Vllt wird auch noch ein Bug dazu gefunden. Deshalb w?rde ich nur Bilder hochladen, die vom Typ Bild sind und auch von der Dateiendung eine "Bildendung" haben. Trotzdem kann immer noch dar?ber Code hochgeladen werden (es gab mal eine L?cke in der Darstellung von JPG in Browsern, wor?ber HTML "ausgef?hrt" werden konnte; da wurde in eine Bilddatei mit einer Bilddateiendung HTML-Code reingeschrieben und fertig...).
    Also das sicherste ist den Upload ganz zu unterbinden. ^^
    Aber mit den oben gennanten Sicherheitsvorkehrungen sollte es einigerma?en sicher von statten gehen.

    MfG Lucas

    Den Upload ganz zu unterbinden w?re aber sehr unfreundlich ;)
    Weil ich das f?r mein Avatarskript brauche und da sollen die User schon die M?glichkeit haben ihre eigenen Avatare zu verwenden.
    Das mit den Negationen hat auch einen Sinn, da ich zuerst die Dateigr??e des Bildes ?berpr?fe, dann die Ma?e und dann nat?rlich noch die Dateitypen und im else teil wird dann das Bild hochgeladen.
    Also soll ich nun einmal den Dateityp ?berpr?fen mit image/jpeg etc. und noch die dateiendung?
    Nunja, hoffen wir, dass es dann sicher ist!
  6. Mir war irgendwie gerade langweilig und deswegen habe ich einfach mal eine Funktion zum ?berpr?fen von Bildern geschrieben. Sind bestimmt ein paar sinnlose Stellen drin, aber funktionieren tut sie. Fehlermeldungen k?nnte man auch noch einbauen. >.<

    Edit:
    - Kommentare hinzugef?gt
    - Dateigr??en?berpr?fung eingebaut
    <?php
        //$file = Datei
        //$w    = Breite (Standard: 100px)
        //$h    = Hoehe  (Standard: 100px)
        //$s    = Dateigroesse (Standard: 20480 Byte = 20kb)
      function check_image($file, $w = 100, $h = 100, $s = 20480){
          //Falls die Datei existiert
        if(file_exists($file)){
            //Ueberpruefung der Endung
          switch(substr($file,-3,3)){
            case 'gif':
              $mime = 'image/gif';
              break;
            case 'jpg':
              $mime = 'image/jpeg';
              break;
            case 'png':
              $mime = 'image/png';
              break;
            default:
              $mime = false;
              break;
          }
            //Daten des Bildes rausbekommen
          if($image = getimagesize($file)){  
              //Speichern der Eigenschaften  
            $width  = $image[0]; //Breite
            $height = $image[1]; //Hoehe
            $type   = $image[mime]; //Typ
              //Ist die Datei zu breit, zu hoch oder hat den falschen Typ, false zurueckgeben
            if($width > $w || $height > $h || $type != $mime || filesize($file) > $s){
             return false;
            }
              //Entspricht das Bild den Anforderungen, true zurueckgeben
            else{
              return true;
            }
          }
            //Falls die Datei kein Bild ist false zurueckgeben
          else{
            return false;
          }
        }
          //Falls die Datei nicht existiert, false zurueckgeben
        else{
          return false;
        }
      }  
    ?>


    Beitrag ge?ndert am 24.06.2006 15:48 von i-spacke
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!