So verhindern Sie eine Tiefenverknüpfung mit Dateien auf meiner Website

8

Ich besitze eine Website, die viele Freeware-Sachen zum Herunterladen enthält. Das Problem, vor dem ich stehe, ist, dass Menschen aus der ganzen Welt die direkten Verbindungen nehmen der Dateien (z. B. .zip-Dateien) und veröffentlichen sie auf ihren Websites und allgemeinen Foren. Ich bekomme sehr viel Bandbreite und das ist ok, aber die Anzahl der besuchten Seiten ist gering. Gibt es einen Weg oder ein Skript, das ich zu den Links hinzufügen kann, so dass, wenn jemand auf den Link von einer fremden Website drückt, stattdessen eine Seite von meiner Website geöffnet wird, die ihn dann die Datei herunterladen lässt, damit ich weitere Besuche bekommen kann.

Zum Beispiel ist dies eine Adresse von meiner Website:

  

Ссылка

Wenn jemand darauf drückt, wird der Downloadvorgang direkt gestartet.

    
Vadim Kotov 27.12.2008, 14:15
quelle

5 Antworten

16

Wenn Sie PHP verwenden, können Sie ein Skript verwenden, das den Benutzer mit dem Download verbindet, aber nur, wenn $_SERVER['HTTP_REFERER'] von Ihrer Site stammt. Wenn Sie nicht auf Ihre Website weitergeleitet werden.

    
Ólafur Waage 27.12.2008, 14:20
quelle
18

Ihre Website wird von einem Apache-Webserver gehostet. Sie sollten daher in der httpd.conf (oder im virtuellen Hostblock) Ihrer Site Folgendes tun können:

%Vor%

Das sagt im Grunde:

  1. Schalten Sie die mod_rewrite-Engine auf
  2. ein
  3. Wenn der HTTP-Referrer nicht leer ist ...
  4. Und enthält nicht meinen Domain-Namen (mit oder ohne "www.") ...
  5. Leiten Sie alle Anfragen unter / PublicFiles / to /page-about-direct-links.html
  6. um

Weitere Informationen zu mod_rewrite finden Sie hier: mod_rewrite - Apache HTTP Server

>     
Brian Kelly 27.12.2008 15:32
quelle
11

Geben Sie keine direkte Verknüpfung zu der Datei an, die Sie bereitstellen. Stellen Sie ein Skript bereit, das den Inhalt durch das Skript sendet, sobald Sie auf die Schaltfläche zum Senden klicken.

Suchen Sie im Internet nach Dateien über cgi.

Hier ist ein schöner Link, den ich online gefunden habe: hier

    
Juan 27.12.2008 15:10
quelle
1

Warum nicht einfach die Links dynamisch und indirekt machen, zum Beispiel:

auf Seite X: (statisch)

%Vor%

auf Seite Y: (dynamisch generiert)

%Vor%

und ersetzen Zeitstempel mit der aktuellen Zeit in Millisekunden seit 1970, Zähler = ein Zähler, den Sie einmal pro Download erhöhen, Hash = MD5 Hash der Verkettung (Zeitstempel, Zähler, geheime Salz) wobei geheime Salz = jeder Lieblingscode Sie behalten Geheimnis.

Dann auf Seite Z.php, berechnen Sie einfach den Hash aus dem Zähler und Zeitstempel in der Abfragezeichenfolge, überprüfen Sie, dass es mit dem Hash in der Abfragezeichenfolge übereinstimmt, und dass der Zeitstempel neu ist (z. B. aus den letzten 30 Minuten oder 60 Minuten oder was auch immer). Wenn ja, dann diene die fragliche Datei. Wenn dies nicht der Fall ist, eine Fehlermeldung ausgeben. Dies gibt jemandem nur eine kurze Zeit, um direkt auf Ihre Datei zu verlinken. Wenn Sie das nicht möchten, dann behalten Sie die Zählerwerte im Z.php-Abfrage-String zur Kenntnis und akzeptieren Sie sie nicht mehr als einmal.

    
Jason S 27.12.2008 18:28
quelle
0

Ich bin überhaupt kein Web-Experte, aber ich dachte über den folgenden Zeiger nach -

Wenn Sie asp.net verwenden, könnten http-Handler oder Module, die auf der Website-Ebene konfiguriert sind, hilfreich sein (viele Informationen zu denen im Internet, ich habe kürzlich nach etwas Arbeit gesucht, hier ist eine Artikel zum Beispiel.

Die Idee besteht darin, die Anfrage abzufangen, bevor sie die Zieldatei erreicht, und sie auf die Seite umzuleiten, die Sie anzeigen möchten; zum Beispiel - wenn jemand die von Ihnen gepostete URL durchsuchen möchte (" Ссылка ") Abfangen dieses Anrufs, Suche nach der Seite, die Sie anzeigen möchten, und Umleiten der Anfrage dort, ich schätze, Benutzer, die einem Link folgen, werden nicht zu genervt sein (es sei denn, sie haben "Ziel speichern unter" getan) Speichern von HTML und nicht ZIP).

Allerdings gibt es ein "Loch" in meinem Plan - wie stellen Sie eigentlich einen Link zur Verfügung, der von Ihrer eigenen Seite funktioniert? Ich glaube, Sie können zwischen Anfragen, die von Ihrer Website kommen, und solchen, die von anderen stammen, unterscheiden, die Sie auf dem Handler / Modul überprüfen können, indem Sie das Anfrageobjekt untersuchen.

    
Yossi Dahan 27.12.2008 15:18
quelle

Tags und Links