Einzelnen Beitrag anzeigen
  #1  
Alt 30.12.2014, 20:08:55
Heinrich Heinrich ist offline
Member
 
Registriert seit: Feb 2006
Beiträge: 883
Uploadscript für Bilder

Hallo,

hatte ja Probleme mit den Filemanagern der Webeditoren. Und nun auch festgestellt, dass mein bisheriges Uploadscript locker manipulierte Dateien bzw. Dateiendungen durchlässt.

Nun habe ich ein neues erstellt und möchte euch fragen, ob ihr das für sicher haltet. (Es liegt zwar im passwortgeschützten Bereich, aber das waren die anderen angreibaren auch.)

Schon mal danke für Kritik und Hinweise!

PHP-Code:
<h3>Bilder für Webseite hochladen</h3>
<?php
// Hier wird das Fomular (siehe ganz unten) verarbeitet
if ($_POST['los']) {

$uploaddir _BILDPFAD_ABS;
$uploaddatei basename($_FILES['userfile']['name']);
$uploadfile $uploaddir $uploaddatei;
$dateiendung stristr $uploaddatei'.' );


echo 
"Uploaddatei: ".$uploaddatei."<br />";
echo 
"Uploadfile: ".$uploadfile."<br />";
echo 
"Dateiendung: ".$dateiendung."<br />";
echo 
"Größe: ".$_FILES['userfile']['size']."<br />";
echo 
"MIMETYPE: ".$_FILES['userfile']['type']."<br />";
echo 
"<hr />";

if (
exif_imagetype($_FILES['userfile']['tmp_name']) == false) {
    echo 
"kein Bild!!!!!<br />";
    exit;
    }
if (
substr_count $dateiendung'.' ) > 1) {
    echo 
"Wahrscheinlich doppelte Dateiendung<br />";
    exit;
    }
else {
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo 
"Datei ist valide und wurde erfolgreich hochgeladen.\n";
    }
    else {
    echo 
"Möglicherweise eine Dateiupload-Attacke!\n";
    }
}

        echo 
"<table border='1' width='80%'><tr><td>";
//        $_SESSION['bilddatei'] = $uploaddatei;
        
echo "<h3>Ergebnis Bild hochladen:</h3>";    
        echo 
"<b>Gerade hoch geladenes Bild</b> ";
        echo 
$uploaddatei."<br/>";
        echo 
"<img src='"._BILDPFAD.$uploaddatei."'><br />";
        echo 
"</td></tr></table>";


// Ende if ($_POST['los']) {
?>
HTML-Code:
<!-- Die Encoding-Art enctyoe MUSS wie dargestellt angegeben werden -->
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    <!-- MAX_FILE_SIZE muss vor dem Dateiupload Input Feld stehen -->
    <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
    <!-- Der Name des Input Felds bestimmt den Namen im $_FILES Array -->
    Diese Datei hochladen:<br /> <input name="userfile" type="file" /><br />
  <p>  <input type="submit" name="los" value="Hochladen" /></p>
</form>
Mit Zitat antworten