Hallo, die nächste Frage!
nachfolgend ein Script, um Bilder hochzuladen und zu prüfen, ob es sich wirklich um ein Bild handelt (nicht nur anhand der Dateiendung). Funktioniert alles gut. Auch Fakes mit gefälschten Dateiendungen (.*** in .jpg umbenennen) werden erkannt.
Die Form:
Das empfangende Script:
Meine Frage - ist das sicher gegen Missbrauch?
nachfolgend ein Script, um Bilder hochzuladen und zu prüfen, ob es sich wirklich um ein Bild handelt (nicht nur anhand der Dateiendung). Funktioniert alles gut. Auch Fakes mit gefälschten Dateiendungen (.*** in .jpg umbenennen) werden erkannt.
Die Form:
PHP-Code:
<form enctype="multipart/form-data" action="<?php echo $_SERVER['SCRIPT_NAME']."?sid=".$sid; ?>" method="POST">
<!-- Der Name des Input Felds bestimmt den Namen im $_FILES Array -->
Diese Datei hochladen:<br /> <input name="userfile" type="file" />
<input type="submit" name="los" value="Hochladen" />
</form>
PHP-Code:
if ($_POST['los']) {
$uploaddir = _BILDPFAD_ABS;
$uploaddatei = basename(strip_tags($_FILES['userfile']['name']));
$uploadfile = $uploaddir . $uploaddatei;
$dateiendung = substr (stristr ( $uploaddatei, '.' ), 1);
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, '.' ) > 0) {
echo "Wahrscheinlich doppelte Dateiendung<br />";
exit;
}
$endung = array("jpg", "jpeg", "gif", "png");
if (!in_array($dateiendung,$endung)) {
echo "Keine gütige 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>";
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']) {
Kommentar