Tom: Download

Beitrag lesen

Hello,

Was hälst du denn von der Möglichkeit, dass ich beim Upload eine Zufallszahl generieren lasse, die auch in die DB eingetragen wurde und beim Auslesen/Download wird zuerst geprüft ob z.B. id, Bildname und Zufallszahl zusammen passen?

Das hält aber trotzdem niemanden davon ab, als Bildernamen "/etc/passwd" einzugeben.

Diese Lücke fängst Du auch durch dein $basedir nicht ab. Man muss dann nur etwas mehr probieren:

Bildname = "../../../../../../../../../etc/passwd"

sollte fürs erste genügen.

Solche Einträge finde ich Zuhauf in meinem Error-Log.

Allerdings kommen die nicht sehr weit, weil ich mindestens mit der Funktion basename() http://de3.php.net/manual/de/function.basename.php den Filenamen aus dem Parameter extrahiere. Da interessieren die Rückschritte dann gar nicht mehr.

Deine $_filelist solltetst Du so aufbauen:

$_filelist["externer_name1"] = interner_name1;
$_filelist["externer_name2"] = interner_name2;
$_filelist["externer_name3"] = interner_name3;

Das wolltest Du sicher mit dem $_GET['bild'] => $name erreichen. Aber überleg mal, wenn der User den externen Namen selber festlegen darf, dann passt doch jeder!

Und dann passt auch Deine Abfrage:

if (!isset($_filelist[$_GET["bild"]])
{
  echo "Böder Bube, Du...";
  exit;
}

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen