Ich mache ein Projekt für einen temporären Download-Link für mich, um die Datei vor Hotlinkern zu schützen ...
Ich glaube, dass dies möglich ist ... weil wir alle wissen, dass viele der Filesharing-Sites " keine erwähnen wollen" ... ihr Link für die Datei ist abgelaufen. ..
Beispiel
Wenn ich eine Datei von ihrer Seite herunterlade, geben sie einen direkten Link, um es richtig anzuklicken? aber dann wird dieser Link nach ein paar Stunden oder Minuten ablaufen.
Wie soll ich wissen, dass der Link abgelaufen ist? Wenn ich den gleichen Link nach einem Tag in meinen Download-Manager kopiere, kann er die gleiche Datei nicht herunterladen.
Ich habe dies bereits in htaccess
ermöglicht.
Beispiel
%Vor%Wenn sie den direkten Link in die Adresszeile des Browsers kopieren, werden sie in Ссылка
Aber wenn sie den direkten Link auf ihren Download-Manager kopieren, wird die Datei heruntergeladen.
Was ist, wenn sie den Link auf eine andere Seite wie Forumswebsite, Blog usw. veröffentlichen? und bitten Sie den Leser, den Link in den Download-Manager zu kopieren und einzufügen, damit er ihn direkt herunterladen kann.
Dies ist das Problem, das ich verhindern möchte, um meine Datei zu schützen. Ich mache das auf PHP, aber ich kann es nicht herausfinden ...
Ihre Hilfe wird sehr geschätzt.
Verwenden Sie einen Code wie diesen
%Vor%füge dies deiner .htaccess-Datei hinzu
%Vor% Verknüpfen Sie mit etwas wie /downloads/abb76b3acbd954a05bea357144d614b4
, wobei abb ... eine zufällige Zeichenfolge ist, z. B. ein gesalzener Hash der aktuellen Uhrzeit. Wenn Sie diese Verknüpfung für jemanden erstellen, speichern Sie die zufällige Zeichenfolge in einer Datenbanktabelle. Diese Tabelle könnte folgendermaßen aussehen:
Wenn Sie eine Anfrage bei /downloads/...
erhalten, suchen Sie die zufällige Zeichenfolge und senden Sie die richtige Datei zurück. Wenn der Zeitstempel created
zu alt ist, tun Sie dies nicht. Benutze einen Cronjob, um alte Tabellenzeilen zu bereinigen, oder weniger ideal, wenn jemand eine Anfrage an /downloads/...
stellt.
Die Lösung, die mir in den Sinn kommt, ist folgende: Wenn Sie eine Tabelle haben, die Datei und zum Beispiel FileModel darstellt, können Sie dort den Namen der Datei, einige Details, Größe, auch den Pfad zu der Datei in Ihrem Dateisystem und einzigartig, die Ergebnis von MD5 aus einigen der Daten sein können, für die Sie wählen Es basiert auf einigen Dateidetails zum Beispiel:
%Vor%Jedes Mal, bevor jemand Ihre Datei herunterladen darf, prüfen Sie, ob ein solcher eindeutiger Wert in Ihrer Tabelle vorhanden ist. Wenn Sie jemanden mit der in FileModel erstellten downloadFile-Methode herunterladen, machen Sie vorher einen neuen eindeutigen Namen, um weitere zu verhindern Downloads
%Vor%Wenn es keinen solchen eindeutigen Wert in Ihrer Datenbank gibt, dann zeigen Sie nur einen Fehler über den Timeout-Link für den Benutzer an
%Vor%Hier stelle ich Ihnen einen Beispielprototyp der Aktion vor, mit dem Sie in Ihrem Controller beginnen können:
%Vor%Sie können auch ein Datetime-Feld erstellen, in dem Sie zum Beispiel 1 Tag zum aktuellen Datum hinzufügen und überprüfen können, ob die Zeit bis zum Download abgelaufen ist.
Ich kenne diese alte Frage, aber ich habe die Möglichkeit, die Datei nur einmal ohne Datenbank zu laden, schneller Weg:)
%Vor%Tags und Links php cakephp cakephp-1.3