sicherere Downloads

<< Click to Display Table of Contents >>

Navigation:  »No topics above this level«

sicherere Downloads

Problemstellung:

Die  Daten die heruntergeladen werden sollen, liegen nicht im "Public"-Ordner. Somit sind die Daten sicher und nur eingeloggte Benutzer können Backups herunterladen. Aber damit das klappt, müssen die Daten mit PHP gelesen und per PHP-Response an den Browser gesendet werden.

Das braucht Arbeitsspeicher und auf den meisten Shared-Hostings ist das auf 128 bis 512 MB beschränkt.

Normalerweise kann man das mit einem Datenstream loesen, sprich Daten werden in kleineren Portionen gelesen, an den Browser gesendet und dann wird der dazu verwendete Speicher wieder freigegeben. Das scheint bei Cyon nicht zu funktionieren.

 

Wenn die Daten im "Public"-Ordner liegen gibt es diese PHP Zwischenschicht nicht und somit gibt es auch keinen PHP-Flaschenhals.

ABER, die Daten sind für jeden der den Link kennt abrufbar, das ist auch nicht gut.

 

Weitere Idee: Die Daten temporär in den "Public"-Ordner kopieren und danach wieder löschen.

Das braucht Zeit und Speicherplatz und die Daten sind auch öffentlich (nicht mit Login geschützt), also auch nicht optimal.

 

Auf Unix/Linux gibt es SymLinks, das sind Aliasse einer Datei. Man kann eine Datei die in einen Ordner liegt mit einem Dateischnipsel an einem anderen Ort "verlinken". Wenn man nun diesen Schnipsel öffnet, wird die richtige/verknüpfte Datei geöffnet. Somit muss man nicht kopieren.

 

Aber die Datei ist auch mit dieser Verlinkung immer noch öffentlich und nicht geschützt. Wir wollen, dass nur eingeloggte Benutzer die Datei herunterladen können. Daher:

 

Wenn man den Dowload-Button klickt, wird ein Token mit Benutzerdaten generiert und mit diesem Token wird ein Link generiert, der 1 Stunde gültig ist.

 

Dann wird man zu diesem Link weitergeleitet, der Token wird überprueft und falls gültig, wird ein SynLink erstellt und der Download gestartet.

Im Hintergrund läuft ein sogenannter Cron(Job), der läuft alle 15 Minuten und löscht alle SymLinks, die abgelaufen sind.

 

Somit muss der Benutzer eingeloggt sein und der Link ist max. 1 Stunde öffentlich.