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 Bildecho "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