Downloadurl verstecken

xtratz

Gesperrt
Hallo Leute,

ich lese mit folgendem Script ein Verzeichniss aus und möchte die vorhandenen Dateien als Download anbieten.
Das ganze in einem geschützten Kundenbereich.

PHP:
 <?php
$folder="download_business_kunden_001ftzsef_templates"; // Verzeichnis indem die dateien sind !
echo '';
echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td>';
//echo ("<strong>Typ : ".$folder."</strong><br><br>");
$open=opendir ($folder);
while ($file = readdir ($open)) {
$count++;
if($file != "." && $file != "..")
echo '<a href="'.$folder.'/'.$file.'">'.$file.'</a><br>'; }
closedir($open);
echo '</td></tr></table></center>';?>

Da man aber jederzeit die URL manuell eingeben kann würde ich gerne die URL verstecken.
Ich habe aber die leise Vorahnung das dies nur dann geht wenn ich die ID aus einer Datenbank auslese.

Gibt es wirklich keine Möglichkeit dies auch so zu realisieren.

Gruss und Danke.
 
Es gibt mehrere Möglichkeiten, die tatsächliche Ressource für Außenstehende zu verschleihern. Eine Möglichkeit wäre, die Dateien in einem Verzeichnis außerhalb des von Außen zugänglichen Dateisystems zu speichern – was ich dir auf jeden Fall empfehle – und den Zugriff auf selbige nur nach Autorisierung freizugeben.
Dazu stehen dir wiederum mehrere Autorisierungsmethoden zur Verfügung, etwa durch ein Passwort oder aber durch zeitabhängige Prüfsummen etc.
Es hängt eben ganz davon ab, in welchem Ausmaß die Daten gesichert werden sollen und welche Informationen über die Ressource nach Außen durchscheinen soll.

Weitere Informationen wären daher sehr zweckdienlich.
 
Hi,

na ja, Du könntest bei der Anforderung eines Downloads temporär eine Textdatei erstellen, die als Namen eine eindeutige ID hat (z.B. u.a. aus einen timestamp gebildet) und im Inhalt den korrekten Pfad. Deine Downloadlinks verweisen dann auf eine "download.php", der Du als Parameter diese ID mitgibst. Diese php-Datei:
  • Öffnet die Textdatei mit dem Namen der übergebenen ID
  • Liest den Inhalt aus
  • Löscht die Textdatei ggf. (damit ist jeder Download nur einmal gültig)
  • und gibt die richtige Datei aus (korrekten content-type nicht vergessen!)

... mit einer dB wärs natürlich praktischer. ;)

Gruß

EDIT: Ups - Gumbos Vorschlag macht natürlich mehr Sinn. ;)
.
 
Hallo Tobias,

hast Du vielleicht ein Beispiel parat.
Ich möchte Dich natürlich nicht um einen komplett fertigen Code bitten, nur vielleicht ein kleines Beispiel wie man das anpacken könnte.

ich muss nämlich komplett auf eine Datenbank verzcihten für dieses Vorhaben speziell.

Gruss und danke, danke, danke..!
 
Das Problem ist das ich auf htaccess verzichten möchte.
Ich habe ein Session basierendes Loginsystem.

Und wenn ich die Daten ausserhalb des www Verzeichnisses lege dann bekomm ich Probleme mit open_basedir.

Das einzigste was ich verbergen möchte ist die direkte URL zum Verzeichnis in dem die Daten liegen.

Gruss
 
Das is ne gute Idee.
Habe das mal so gemacht, aber dann wird das Verzeichnis nicht gefunden und wenn ich es wieder encodiere dann ist der Link ja wieder sichtbar ?!

$folder= base64_decode('/var/www/vhosts/xony.de/httpdocs/download_business_kunden_001ftzsef_templates');

Ein dickes Danke für die Unterstützung !

Gruss
 
Zuletzt bearbeitet:
Genial, Tobias, mit deinem Skript lässt sich nicht nur der Inhalt einer völlig beliebigen Datei einsehen, sonder die Datei selbst sogar auch noch löschen.
 
Arrgh! Wie recht Du hast *an die Stirn schlag*

1. sollte natürlich wenn dann $path gelöscht werden (geändert)

(die temporären Dateien sollten vielleicht besser in einem eigenen Directory angelegt werden; der Pfad wird dabei nicht übergeben)

2. muss der Inhalt von $_GET["id"] auf Übereinstimmung mit einem Muster überprüft werden, damit nur die temporär erstellten Dateien geöffnet werden können.

3. Sollte sowohl die Dateigröße der übregebenen Datei als auch das Vorhandensein der "ausgelesenen" Datei abgefragt werden.

Nix für ungut. :-(
.
 
Zurück