download ordner schützen

xtraMen

Erfahrenes Mitglied
Hallo Leute,

ich habe einen Downloadordner indem ich Downloads anbiete.
Die Downloads werden per redirect angeboten also der User sieht den Link nicht direkt.

Jetzt kann man aber wenn man irgendwie die URL rausbekommt den Download direkt aufrufen und das möchte ich irgendwie verhindern.

Hat jemand eine Idee wie man das anstellen könnte .

Gruss
 
Hallo,

also ich würde den folgenden Ansatz bevorzugen:

PHP:
# $download sei der Bezeichner für die zu ladende Datei 

# Dieses Verzeichnis liegt außerhalb der Document_Root und 
# ist nicht per URL zuzugreifen. 
$basedir = "/home/www/download"; 

# Übersetzung von Download-Bezeichner in Dateinamen. 
$filelist = array( 
  "file1" => "area1/datei1.zip", 
  "file2" => "area1/datei2.zip", 
  "file3" => "area2/datei1.zip" 
); 

# Einbruchsversuch abfangen. 
if ($filelist[$download] == "") 
  die("Datei $download nicht vorhanden."); 

# Vertrauenswürdigen Dateinamen basteln. 
$filename = sprintf("%s/%s", $basedir, $filelist[$download]); 

# Passenden Datentyp erzeugen. 
header("Content-Type: application/octet-stream"); 

# Passenden Dateinamen im Download-Requester vorgeben, 
# z.B. den Original-Dateinamen 
$save_as_name = basename($filelist[$download]); 
header("Content-Disposition: attachment; filename=\"".$save_as_name."\""); 

# Datei ausgeben. 
readfile($filename);

Ansonsten könntest du den Order ja mit .htaccess schützen so das nur über berechtigte Seiten darauf zugegriffen werden kann - ich weiss jedoch nicht wie das geht!
 
Falls Du auch PHP zum Uploaden der Dateien nutzt und Dir eine Datenbank zur Verfuegung steht kannst Du auch folgendes machen:
Beim Upload vergibst speicherst Du die Datei mit einem total unsinnigen Namen, am besten einem Zufallswert oder dem Hash des Dateinamens. Diesen Namen und den richtigen Namen speicherst Du in der DB.
Beim Download sendest Du dann im Header den richtigen Dateinamen, sodass der Browser die Datei mit diesen runterlaedt und nicht mit dem von Dir vergebenen, unsinnigen, Namen.
Falls der Server so eingestellt ist den Verzeichnisinhalt anzuzeigen falls keine index.html oder index.php exisitiert kannst Du zusaetzlich noch eine index.php mit Weiterleitung auf Deine Website in das Verzeichnis legen, sodass auch der Verzeichnisinhalt nicht angesehen werden kann und dann so die Dateien erreicht werden koennen.
 
Zurück