Chris: Netbuilder von Stefan Ernst

Beitrag lesen

Hallo,

ich habs so übernommen und das genügt meistens.

<?php   ### upload.php ###

ini_set('track_errors','1');
error_reporting(E_ALL);

if(!isset($_POST['id']) or $_POST['id'] != strval('12345678')) die('keine Berechtigung');

if(!isset($_POST['ziel'])) die('kein Zielverzeichnis angegeben');

if(!isset($_FILES['file']['error']) or $_FILES['file']['error'] !== 0)
  die('Kein File fehlerfrei übertragen');

if (!is_dir('./'.$_POST['ziel'])) die('Angegebenes Verzeichnis ist falsch');

if(!is_readable($_FILES['file']['tmp_name'])) die('Temprärer Upload-File nicht lesbar');

if(!is_writable('./'.$_POST['ziel'])) die('Zielverzeichnis nicht beschreibbar');

if(!copy($_FILES['file']['tmp_name'],'./'.$_POST['ziel'].'/'.basename($_FILES['file']['name'])))
  die("PHP-Fehler: $php_errormsg");

echo "File kopiert";

?>

Und die HTML-Datei dazu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/transitional.dtd">
<HTML  style="height:100%;">
<HEAD>

<TITLE>Upload</TITLE>

</HEAD>

<BODY>
  <form action="http://domain.tld/upload.php"
        method="post"
        enctype="multipart/form-data">

File: <input type="file" name="file" size="70"><br>
    Verzeichnis:<input type="text" name="ziel" size="70"><br>

<input type="hidden" name="id" value="12345678">
    <input type="submit" name="btn[upload]" value="Upload">

</form>

</BODY>
</HTML>

Der "Sicherheitsmechanismus" sollte anschließend nicht offen bleiben. Man könnte mit Bruteforce zu leicht eindringen.

LG
Chris