Vorwort Jeder weiß, dass viele Websites mittlerweile eine Gebühr für das Herunterladen von Informationen verlangen, sei es Punkte oder Goldmünzen. Es ist sehr selten, dass man es kostenlos bekommt. Wie verhindern diese Websites also das Hotlinking von Ressourcen? Hier empfehle ich ein Tool, das relativ einfach zu verwenden ist. Nginx selbst bietet secure_link, um die Anti-Hotlink-Funktion zu vervollständigen. Damit können Zeitstempel und Bestätigungscodes zu Serverdateilinks hinzugefügt werden, wodurch Serverdateien vor willkürlichem Herunterladen und Diebstahl geschützt werden. Timing-Diagramm Nginx-Konfiguration Ich werde hier nicht näher auf die Installation von Nginx eingehen. Denken Sie einfach daran, während der Installation ngx_http_secure_link_module zu aktivieren. ./configure --with-http_secure_link_module #Beim Kompilieren von nginx hinzufügen Erkennung des Installationsabschlusses: nginx -V Wenn Folgendes erscheint, war die Konfiguration erfolgreich:
Instanzkonfiguration Server { hören Sie 80; Servername download.52itstyle.com; Zeichensatz UTF-8; Standort / { #Hier werden zwei Parameter konfiguriert, einer ist md5 und der andere ist expires sicherer_Link $arg_md5,$arg_expires; #Das Hash-Format von MD5 ist „secret+URL+expires“, wobei „expires“ die Zeitstempeleinheit s und „url“ die Anforderungsadresse ist „secure_link_md5 52itstyle$uri$arg_e“; #Hier ist unser MD5 der Hash, den wir mit der Methode secure_link_md5 berechnet haben. secure_link vergleicht den berechneten Hashwert, um zu sehen, ob er mit unserem MD5-Parameter übereinstimmt, wenn ($secure_link = "") { #Wenn die Ressource nicht existiert oder der Hash-Vergleich fehlschlägt, geben Sie 402 zurück; } wenn ($secure_link = "0") { #Timeout fehlgeschlagen, Rückgabe 405; } #Benennen Sie den Dateinamen add_header Content-Disposition "attachment;filename=$arg_f" um. Alias /data/site/down.52itstyle.com/; } Fehlerseite 500 502 503 504 /50x.html; Fehlerseite 402 405 /40x.html; Standort = /50x.html { Stamm-HTML; } Standort = /40x.html { Stamm-HTML; } } Parameter sicherer_link Syntax: secure_link-Ausdruck; Standardwert: Keiner Konfigurationsabschnitt: http, Server, Standort Der Ausdruck besteht aus einer Prüfsumme und einer Ablaufzeit. Die Prüfsumme wird mit dem MD5-Hashwert des angegebenen Parameters in secure_link_md5 verglichen. Wenn die beiden Werte inkonsistent sind, ist der Wert der Variable $secure_link leer; wenn die beiden Werte konsistent sind, wird eine Ablaufprüfung durchgeführt; wenn abgelaufen, ist der Wert der Variable $secure_link 0; wenn nicht abgelaufen, ist er 1. Wenn der Link zeitkritisch ist, wird die Ablaufzeit mithilfe eines Zeitstempels festgelegt, der nach dem MD5-Hashwert durch ein Komma getrennt angegeben wird. Wenn kein Ablaufdatum festgelegt ist, ist der Link unbegrenzt gültig. sicherer_link_md5 Syntax: secure_link_md5-Ausdruck; Standardwert: Keiner Konfigurationsabschnitt: http, Server, Standort Der Ausdruck gibt die Parameter zur Berechnung des MD5-Hashwerts an, der mit dem in der URL übergebenen MD5-Wert verglichen und überprüft wird. Der Ausdruck enthält im Allgemeinen die URI (z. B. ist die URI von demo.com/s/link /s/link) und das geheime Verschlüsselungsschlüssel-Symbol. Wenn der Link zeitlich begrenzt ist, muss der Ausdruck $secure_link_expires enthalten. Der Ausdruck kann auch Client-Informationen enthalten, z. B. Zugriffs-IP, Informationen zur Browserversion usw. Java-Backend-Konfiguration Fall, nur als Referenz: importiere org.apache.commons.codec.binary.Base64; importiere org.apache.commons.codec.digest.DigestUtils; /** * Eine verschlüsselte Verbindung herstellen */ öffentliche Klasse SecureLink { private statische String-Site = "https://down.52itstyle.com/"; privater statischer String-Geheimtipp = "52itstyle"; öffentliche statische Zeichenfolge createLink(Zeichenfolge Pfad,Zeichenfolge Dateiname){ String time = String.valueOf((System.currentTimeMillis() / 1000) + 300); // 5 Minuten gültig String md5 = Base64.encodeBase64URLSafeString(DigestUtils.md5(secret + path + time)); String-URL = Site + Pfad + "?md5=" + md5 + "&expires=" + Zeit + "&f="+Dateiname; URL zurückgeben; } öffentliche statische void main(String[] args) { //https://down.52itstyle.com/2018101025689452.pdf?md5=FnDYyFzCooI9q8sh1Ffkxg&expires=1539847995&f=Verteilte Seckill-Architektur.pdf System.out.println(createLink("2018101025689452.pdf","Verteilte Seckill-Architektur.pdf")); } } Zusammenfassen Der gesamte Verschlüsselungsprozess ähnelt ein wenig der symmetrischen Verschlüsselung. Das Backend generiert eine verschlüsselte Adresse basierend auf dem Schlüssel und der Nginx-Proxyserver führt eine Entschlüsselungsüberprüfung durch. Wenn diese erfolgreich ist, wird der Download zugelassen. Beim Test wurde ein weiteres Problem festgestellt. Der generierte Link läuft manchmal ab. Dies kann an der inkonsistenten Zeit zwischen dem Backend-Server und dem Download-Server liegen. Sie können die Systemzeit synchronisieren. Wenn Sie Freunde haben, die Punkte-Download-Dienste anbieten, ist dies in der Tat eine gute Wahl. Sie müssen jedoch darauf achten, dass Sie den Schlüssel von Zeit zu Zeit ändern, um ein Auslaufen zu verhindern. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
>>: Natives JavaScript zum Erreichen von Skinning
Bevor Sie diesen Artikel lesen, hoffe ich, dass S...
einführen Ein Diagramm ist eine grafische Darstel...
Gestern habe ich einen Alibaba Cloud-Server gekau...
In diesem Artikel werden 20 hervorragende Beispiel...
Vor einiger Zeit hat der Blogger das Ubuntu-Syste...
Simulationstabellen und Datenskripte Kopieren Sie...
1. Verwenden Sie grundlegende Textelemente, um In...
Verwenden Sie das RPM-Installationspaket, um MySQ...
Es gibt im Internet viele Artikel zur MySQL-Insta...
Vorwort Um die Hochverfügbarkeit des Systems zu g...
Die Verwendung der vue3 Teleport-Sofortbewegungsf...
Im vorherigen Artikel wurde ein ausführliches Bei...
Inhaltsverzeichnis 1. Literale 1.1 Numerische Lit...
Ich glaube, dass jeder manchmal Daten kopieren un...
Dieser Artikel beschreibt anhand eines Beispiels,...