• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Bilderupload unsicher?

domitz

Neues Mitglied
Guten Tag, ich habe folgenden Bilderupload auf meiner Internetseite intigriert. Das Bild wird hochgeladen, verkleinert und mit einem Wasserzeichen versehen.

Ich habe vor langer Zeit mal gehört dass man bei PHP Bilderuploads immer vorsichtig sein sollte, da darüber oft schädlingsdaten (z.B. php Dateien als jpg getarnt) hochgeladen werden können, welche dann z.B. die Datenbank zerstören können.

Ist da etwas dran? Kann ich den oben genannten Bildupload ohne Sorgen verwenden?

Vielen Dank.
 
Ich glaube dieses Script speichert nicht wirklich etwas. Du übergibst Bilder und die werden entsprechend umgewandelt.

Worauf Du aufpassen musst ist, dass hochgeladene Bilder oder Dateien wirklich auch Bilder sind. Das wird von diesem Script nicht gewährleistet, da es den Upload selbst nicht direkt verarbeitet. Es nimmt einfach nur eine Bilddatei und zeigt diese irgendwie an, wenn ich das richtig sehe. Wäre es kein Bild sondern z.B. eine exe-Datei würde es einen Fehler geben.
 
achso sorry ich muss noch erwähnen dass ich das ganze verändert habe.

Hab es so verändert, dass das Bild auch auf meinem Server gespeichert wird:

Code:
<?php
session_start();


   if( isset($_POST['submit']) ) {
      include('SimpleImage.php');
      
      $image = new SimpleImage();
      $image->load($_FILES['uploaded_image']['tmp_name']);
      $image->resizeToWidth(400); 
      $image->save('bimg/'.$get[id].'_'.$spam.'_original.jpg');
      
header('Content-type: image/jpeg');      
      
//Bilder in Variablen Laden
$Grafik = ImageCreateFromJPEG("bimg/".$get[id]."_".$spam."_original.jpg");


//Wasserzeichen erstellen
$im = imagecreatefrompng("");


imagejpeg($Grafik, "bimg/".$get[id]."_".$spam."_original.jpg", 90);     




// Wasserzeichen
    // Wasserzeichen generieren
        // Bild erstellen
        // wert
        $text = '0';


        // Grösse des Bildes (wird neu erstellt)


            $image = imagecreatefrompng("http://www.html.de/images/like_blau_bild.png");


        


        // Hintergrundfarbe des Bildes Festlegen (in diesem Fall Weiss)
        $im = ImageColorAllocate ($image, 255, 255, 255);


        // Text in Bild übergeben
        if ($text <= 9)
        {
            imagestring($image,3,10,5,$text,1);
        }
        elseif ($text >= 10 && $text <= 99)
        {
            imagestring($image,3,5,5,$text,1);
        }
        else
        {
            imagestring($image,3,2,5,$text,1);
        }




        //Bild in Datei Speichern
        imagepng($image,"img/".$get[id]."_".$spam.".png", 100);
    
    //Wasserzeichen erstellen
        $im = imagecreatefrompng("img/".$get[id]."_".$spam.".png"); 


    //Bearbeitung
        ImageCopy($Grafik, $im,
        imagesx($Grafik)-imagesx($im),
        imagesy($Grafik)-imagesy($im), 0, 0,
        imagesx($im),
        imagesy($im));


    //Bild Speichern
        imagejpeg($Grafik, "bimg/".$get[id]."_".$spam.".jpg", 100);
}

Kurz zur Info $get[id] etc werden aus der Datenbank ausgelesen, es handelt sich nicht um $_GET['id']... den Datenbankkram habe ich hier einfach weggelassen.

Dazu wird vorher noch ein Wasserzeichen mit Text generiert was dann im Anschluss auf das hochgeladene Bild als Wasserzeichen gelegt wird.
Ist vielleicht nicht die einfachste/beste Lösung das so zu machen, aber es klappt ^^
 
Ja, nur auf die Klasse SimpleImage kannst Du dann auch verzichten. Die macht doch soweit ich das sehe gar nichts in deinem Script Oo
 
Zurück
Oben