Tom: Bilddatei auf meinem server uploaden und dann...

Beitrag lesen

Hello,

############################################
            #                                          #
            #    Dieses Script ist gemeingefährlich    #
            #                                          #
            ############################################

Script für die Auswertung: [bild_upload.php]

<html>
<head>
<title>Bild-Upload</title>
</head>

<body bgcolor="#00002a" text="#ffffff">
<?php
  if($was=="doit") {

$size = $bild_size; // Größe der Datei

$name = $bild_name; // Der Originalname

$type = $bild_type; // Der MIME Type der Datei

if(eregi("(jpg|jpeg|gif|tiff|png)$",$name)) {
    //legt die zugelassenen Bildformate fest
    if($size<100000000 AND $size!=0) {
    //legt die zugelassene Größe des Bildes fest
      copy($bild,$name); // Kopiert das Bild

echo "Die Datei wurde erfolgreich hochgeladen.<br>";
      echo "Größe: ".$size." Byte<br>";
      echo "Name: ".$name."<br>";
      echo "MIME-Type: ".$type."<br>";
      echo "Ansehen: <a href='".$name."'>".$name."</a>";
      echo "<br><br><br>";
      echo "<a href="index.html" target="_self">Zurück zur
            Startseite</a>";
    } else {
      echo "Die Datei ist zu groß!";
    }
    } else {
    echo "Falsche Erweiterung: ".$name;
    }
  }
?>

<?php
    $pic = "<img src='".$name."' alt='".$name."'><br>";
    $fp = fopen ("galerie.html","a");
    fwrite($fp,$pic);
    fclose($fp);
    $fp = fopen ("galerie.html","r");
    fclose($fp);
?>
</body>
</html>

############################################
            #                                          #
            #    Dieses Script ist gemeingefährlich    #
            #                                          #
            ############################################

1. Es arbeitet mit register_globals = on
   Es gibt bereits seit Jahren $_FILES[] und das hat mehrere
   Gründe! http://de.php.net/features.file-upload

2. Es prüft nicht den Filetyp der hochgeladenen Datei
   dafür gibt es in PHP die Funktion getimagesize()
   http://de2.php.net/manual/de/function.getimagesize.php

3. Es nimmt den Dateinamen des Bildes in den Pfad des Zielsystems
   auf. Man kann also alle Dateien in allen Pfaden kaputtschreiben,
   die der Apache beschreiben darf. Einziger Filter ist die Endung.
   Es gibt die Funktion basename()
   http://de2.php.net/manual/de/function.basename.php, mit der
   man den gültigen Namensanteil aus dem übertragenen "Namen" extra-
   hieren kann und ihn dann mit einem _festgelegten_ Zielverzeichnis
   zu einem Pfad kombinieren sollte!

4. Es prüft nicht vorher, ob die Datei bereits vorhanden ist und
   wem sie gehört. Nur der "Uploder" einer Datei (und der Admin)
   sollte diese wieder entfernen / überschreiben dürfen

5. Sonderzeichen im Bildnamen werden nicht maskiert
   >       echo "Name: ".$name."<br>";

6. Der vom Client gemeldete Mime-Type ist vollkommen unerheblich
   auf Linuxsystemen gibt es dafür die Systemfunktion file (Programm)
   das man über den system() -Befehl aufrufen kann
   http://de.php.net/manual/de/function.system.php
   Jeder gute Provider sollte dieses Programm im safe_mode_exec_dir
   des Users bereitstellen (siehe php.ini) und safe_mode.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen