Dateidownload, readfile() & Performance

cd_brenner

Aktives Mitglied
Hallo,

zur Zeit betreibe ich auf unserer Website einen Dateidownload bei dem die Datei mit readfile() aus dem nicht öffentlichen Ordner ausgelesen werden um die aktuellen Zugriffsrechte zu prüfen.
Ich möchte auf jeden Fall verhindern, dass Daten, die nicht mehr öffentlich sind heruntergeladen werden, wenn der Besucher den direkten Link besitzt.

Der große Nachteil daran ist die Limitierung von Speicher und Skript-Laufzeit die den Download nach einer gewissen Zeit und v.a. bei großen Dateien abbrechen lassen.

Leider steht mod_xsendfile nicht zur Verfügung, deshalb arbeite ich gerade an einer Lösung mit der ich auch sehr große Dateien unter Berücksichtigung der Zugriffsrechte zum download anbieten kann.

Folgender Ansatz:
Das Downloadskript nimmt den ID-Parameter der zu downloadenden Datei entgegen und kopiert diese in ein öffentlich zugängliches Verzeichnis (falls sie noch nicht dort ist), speichert in der Datenbank die ID und den Zeitpunkt der Anfrage und leitet den User über den Location-Header zu dieser kopierten Datei weiter, worauf der Download startet. Einmal pro Stunde löscht ein Skript alle Dateien deren Anfrage schon länger als - sagen wir - 15min zurückliegt.

Stellt diese Weiterleitung für mit <img src=""> eingebundene Bilder ein Problem dar?
Kann ich auch einen Force-Download-Header verwenden?

Vielleicht ist es besser die Datei direkt zugänglich zu machen und beim Offline-Nehmen einfach umzubenennen, wenn das Directory-Listing abgeschaltet ist, sollte das ja auch recht safe sein, oder?

Vielen Dank vorerst,
Markus
 
Scheint mir umständlich.
Lege doch die grossen Dateien im zugänglichen Bereich ab, nur mit sehr langen zufälligen Dateinamen, die Du dann nach Download änderst.
 
Finde ich eher unoptimal hier Race Conditions zu erzeugen. Leichter wäre wohl eine htaccess mit Einwegpasswörtern die nach 24 Stunden gelöscht werden, wenn also vorhanden sollte die Passwörter nicht in einer Datei liegen sondern direkt in einer DB sein.
Sowas würde ich als Hoster auch eher bereitstellen als dieses komische Modul, wobei ich die Filesystemstruktur auch noch preis geben müsste, nur damit es genutzt werden kann.
 
Zurück
Oben