Frage

Die Aufgabe:

Ich möchte sicherstellen, dass die Benutzer meiner Website eine Seite anzeigen, bevor sie einen Download starten.Wenn sie sich die Seite nicht angesehen haben, aber versuchen, direkt einen Hotlink zu den Dateien herzustellen, sollten sie die Webseite aufrufen, bevor der Download zugelassen wird.

Irgendwelche Vorschläge, die besser sind als meine Idee, ein Cookie zu versenden und vor dem Download zu prüfen, ob das Cookie existiert (über .htaccess)?

Die Webseite und die Downloaddateien werden auf verschiedenen Servern liegen.

Umfeld:

  • Apache 2 auf allen Maschinen
  • PHP 5 auf allen Maschinen
  • MySQL 5 auf dem „Webpage“-Server verfügbar (kein Zugriff von den Download-Servern)

Nathan fragte, welches Problem ich zu lösen versuche, und tatsächlich möchte ich Hotlinks beispielsweise von Foren verhindern.Wenn Leute unter Nutzung unserer Bandbreite von unserem Server herunterladen, möchte ich ihnen eine Seite mit einer Anzeige zeigen, bevor der Download beginnt.Es muss nicht absolut sicher sein, aber wir müssen etwas Geld verdienen, um die Server zu finanzieren, oder?:) :)

War es hilfreich?

Lösung 6

Ich werde benutzen mod_auth_token , um sicherzustellen, dass der Benutzer eine "hat die letzte Link“.

Mit mod_auth_token Sie auslaufenden Verknüpfungen erstellen können, das heißt, wenn jemand eine bestehende Verbindung zu nehmen entscheidet und per Post auf einer anderen Website, wird dieser Link nach einer bestimmten Zeit verfallen. Das führt zu einem 403 VERBOTEN, die ich den Benutzer auf die HTML-Seite fangen und umleiten kann ich ihn will.

Andere Tipps

Statt hotlinking auf die Dateien ermöglichen, speichern sie außerhalb einer Web zugänglich Strecke. machen Download-Anforderungen an ein PHP-Skript Stattdessen gehen, die den Download einleitet. Sie können Kontrollen eingerichtet, um sicherzustellen, dass die anfragende Seite war diejenige, die Sie lesen wollen.

Ein Apache mod_rewrite RewriteRule kann dies tun.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.example.com/page.html$
RewriteRule file.exe http://www.example.com/page.html [R=301,L]

Grundsätzlich, wenn ein Antrag auf file.exe nicht mit page.html als Referrer kommt, wird es 301 leitet die Benutzer page.html.

könnten Sie verwenden Server-Seite verteilt Sitzungen statt Cookies, aber das ist wahrscheinlich mehr Mühe, als es wert ist.

Sie könnten auch ohne Referrer Zugang auf Anfragen verbieten oder mit einem falschen Referrer. Aber das ist noch fakable als ein Cookie.

Es würde davon abhängen, wie viel Sie sich interessieren.

Die Lösung hier ist abhängig von dem Problem, das Sie versuchen zu lösen. Wenn Sie versuchen, nur eine direkte Verbindung stellen Sie sicher, nicht in den Foren und so weiter gepostet, dann nur die Referrer mit .htaccess Überprüfung sollte ausreichen. Natürlich kann der Werber leicht genug gefälscht werden, so dass, wenn das Risiko, dass jemand, das zu tun ist ein Problem, dann werden Sie etwas anderes tun müssen.

Ein Cookie sollte es tun, wenn Sie etwas ein wenig sicherer zu müssen. Wir können einfach nicht php-Sessions verwenden, da der Dateiserver und der Webserver auf verschiedenen Feldern sind. Aber wir konnten ein Cookie auf der Grundlage eines Hash der Zeit, und einen geheimen Wert schaffen.

cookievalue = sha1('secretvalue'.date('z-H'));

Wenn der Benutzer die eigentliche Datei anfordert, erzeugt der Datei-Server dieses Cookie wieder und stellt sicher, dass es die Benutzer übereinstimmt. Das heißt, selbst wenn der Benutzer das Cookie schmiedet, wird es nach einer Stunde unwirksam sein, so wer sie interessiert, und sie können ihre eigenen neuen nicht erzeugen, weil sie den geheimen Wert nicht kennen.

Ich war über den .htaccess Befassung Trick vorschlagen, aber es ist nicht eine sehr sichere Methode. Es ist einfach, einen PHP-Skript, mit einer benutzerdefinierten http-Überweisung hinzugefügt zu machen. Wenn Sie die Download-Seite dort eingeben, wird denken, dass es Sie von dieser Seite kommen.

Ist das ein relevantes Problem? Können Sie etwas über den Rahmen Ihrer Download-Seite sagen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top