Sicherheit Uploadskript

schiese

Erfahrenes Mitglied
Hallo,
ich habe ein Uploadskript geschrieben und würde gerne wissen ob es so sicher ist, oder ob ich vielleicht etwas vergessen habe. Ich frage deshalb, weil ich oft Ärger mit meinem alten hatte. Es hatte scheinbar viele Sicherheitslücken.
PHP:
<html>
<head>
<title>Upload-Skript</title>
</head>
<body>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="file" name="bild">
<p>
Name: <input type="text" name="feld1">
<p>
Marke: <input type="text" name="feld2">
<p>
<input type="submit" value="Hochladen">
</form>
<p>

<?php

if (empty($_FILES['bild']['name'])) {
echo "Bitte w&auml;hlen Sie ein Bild aus!";
} else {

$tempname = $_FILES['bild']['tmp_name']; 
$name = $_FILES['bild']['name'];
$uploaddir = "bilder/";

$type = $_FILES['bild']['type']; 
$size = $_FILES['bild']['size'];

if ($_FILES['bild']['size'] > 69632) {
echo "Die maximale Dateigroesse betraget 68 KB!";
} else {


if( $type != "image/pjpeg" && $type != "image/jpeg" && $type != "image/jpg" && $type != "image/gif" ) { 
echo "erlaubte Formate sind JPEG und GIF!";
} else {

if (!getimagesize($_FILES['bild']['tmp_name']) ) {
echo "Die Datei, die Sie hochladen m&ouml;chten ist kein Bild!";
} else {

// In Verzeichnis verschieben
if (!move_uploaded_file($tempname, $uploaddir.$name )) {
echo "Es gab einen Fehler mit dem Upload. Versuchen Sie es bitte erneut.";
} else {

// Bild umbenennen
$timestamp = time();
$zufallszahl = rand(9,9867);
$neuername = $uploaddir.$zufallszahl.$timestamp.$name;

if (!rename($uploaddir.$name, $neuername)) {
echo "Es gab ein Fehler beim Umbenennen des Bildes.";
} else {

// Bilder verkleinern


$size = getimagesize($neuername);  
$width = $size[0];  
$height = $size[1];  
$width_tn = 300;  
$height_tn = intval($height * $width_tn / $width); 

if($size[0] > 300) {

if( $type != "image/gif" ) {

$picture = ImageCreateFromJPEG($neuername);  
$picture_tn = ImageCreateTrueColor($width_tn,$height_tn);  
ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);
ImageJPEG($picture_tn, $neuername,75);
imagedestroy($picture);
imagedestroy($picture_tn);

} else {

$picture = ImageCreateFromGIF($neuername);  
$picture_tn = ImageCreateTrueColor($width_tn,$height_tn);  
ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);
ImageGIF($picture_tn, $neuername,75);
imagedestroy($picture);
imagedestroy($picture_tn);

} // Falls Bilder weniger als 300 px breit
} // Nach formaten sortieren
} // rename ENDE
} // move_uploaded_file ENDE
} // Pruefen, ob Datei ein Bild ist ENDE
} // Auf erlaubte Formate pruefen ENDE
} // Auf Dateigroesse pruefen
} // Pruefen, ob ein Bild ausgewaehlt wurde
?>
</body>
</html>

schiese
 
Zurück