Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung, wie PHP Thunder-Downloads verhindert
Wie verhindert PHP Thunder-Downloads? In diesem Artikel wird hauptsächlich die detaillierte Erklärung der PHP-Methoden zur Verhinderung von Hotlinks und Thunder-Downloads als Referenz für alle vorgestellt. Ich hoffe, es hilft allen.
Hotlinking verhindern:
Prinzip: Wenn der Server uns auffordert, eine Datei herunterzuladen, erhalten wir einen Link, und dann finden wir die Datei über diesen Link und dann laden Sie es herunter. Das bedeutet also, dass dieser Link vorhanden sein muss. Wie kann man also Hotlinks verhindern? Das bedeutet, dass es sich bei dem Ihnen zur Verfügung gestellten Link nicht um einen echten Dateilink handelt. Das ist leicht vorstellbar. Wie können wir Ihnen also ermöglichen, die Datei herunterzuladen, ohne Ihnen einen echten Link zu geben?
Wenn wir PHP zum Erstellen von Webseiten verwenden, fügen wir immer PHP-Code in die Mitte des HTML-Codes ein, verwenden dann PHP, um den verbleibenden Code zu generieren, und übergeben ihn dann an den Client, was bedeutet, dass der Client dies tut Akzeptieren Sie es als Ergebnis der Ausführung unseres PHP-Skripts. Das heißt: Wenn das Ergebnis der Ausführung meines PHP-Skripts die Datei ist, die Sie herunterladen möchten. Auf diese Weise haben wir einen Datei-Hotlink-Schutz erreicht. Das heißt, der Link, den Sie erhalten können, ist diese PHP-Datei, und dann wird diese sich ständig ändernde PHP-Datei in die Datei umgewandelt, die Sie herunterladen möchten.
Der Code lautet wie folgt:
$FileAddress : 文件的相对路径。 $DownloadName : 文件下载到客户端的名字。 if(file_exists($FileAddress) && $file=fopen($FileAddress,'r')) { //首先要判断文件是否存在,如果文件跟本不存在的话,后边的代码也是白费。 Header('content-type:application/octet-stream'); //声明文件类型,这里是为了让客户端下载它,而不是打开它,所以声明为未知二进制文件。否则客户端会根据其文件类型在线打开它。 Header('content-Length:'.filesize($FileAddress)); //声明文件的大小,告诉客户端这个文件的大小,否则客户端下载的时候看不到进度。 Header('content-disposition:attachment;filename='.$DownloadName); //声明文件名,这里就是告诉客户端它要下载的文件的名字,否则名字就会是你php文件的名字。 echo fread($file,filesize($FileAddress)); //这里就是将加载的文件echo出来,因此这个php文件不能出现其他任何的文字,就是说这里若是出现了任何其他的输出的话都会输出到客户端下载的文件里。 fclose($file); //最后关闭句柄。 }
Der obige Code hat die Aufgabe, Hotlinking zu verhindern, erfolgreich abgeschlossen und muss nur diese beiden Variablen definieren. Diese beiden Variablen können über GET abgerufen werden. Wenn wir beispielsweise den tatsächlichen Link der Datei ihrer Nummer in der Datenbank zuordnen, müssen wir nur eine Datei-ID abrufen, um die Datei herunterzuladen, um die Sicherheit unserer tatsächlichen Dateiadresse zu gewährleisten. . Natürlich können Sie auch den echten Link zur Datei verschlüsseln. Kurz gesagt: Erwähnen Sie den echten Link einfach nicht und platzieren Sie ihn dort, wo der Client ihn sehen kann.
Thunder-Downloads verhindern
Tatsächlich können wir mit dem obigen Code nur den Link ausblenden, aber nicht verhindern, dass der Client Thunder und andere Tools zum Herunterladen verwendet . Wie kann man also verhindern, dass es mit Tools wie Thunder heruntergeladen wird?
Wie ich bereits sagte, können wir den Pfad dieser Datei zur PHP-Datei auf verschiedene Arten ermitteln, sodass wir diese Informationen nur nicht zum Link hinzufügen müssen. Beispiel: Die Datei-ID kann per POST und die Datei-ID per Sitzung übertragen werden.
Das nenne ich: ausgefallene lizenzierte Downloads.
1. Wir können die Client-Sitzung in die heruntergeladene Header-Seite schreiben, um ihren Autorisierungscode zu speichern, die Datei-ID darin zu speichern und dann den Code zur Überprüfung der Sitzung in der heruntergeladenen PHP-Datei hinzuzufügen, sodass selbst wenn Der Client Es ist sinnlos, die Verbindung in Thunder Download einzugeben.
2. Wir können der Download-Header-Seite ein verstecktes Formular hinzufügen und es mit POST an PHP senden, das die Download-Funktion implementiert. Dadurch kann auch das Herunterladen von Drittanbieter-Tools verhindert werden.
Kurz gesagt, es gibt viele solcher Methoden. Die Hauptidee besteht darin, die Informationen und Links der herunterzuladenden Dateien zu trennen, sodass die Datei nicht mit nur einem Link heruntergeladen werden kann .
Verwandte Empfehlungen:
Aufteilen und Zusammenführen von PHP-Dateien (Haltepunkt-Wiederaufnahme)
Eine kurze Einführung in die PHP-Dateisperre und Prozesssperre
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie PHP Thunder-Downloads verhindert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!