Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

不言
不言nach vorne
2019-01-26 10:26:283810Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Frage, was Hotlinking ist. So fälschen Sie Referer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispielen). Es hat einen bestimmten Referenzwert. Freunde in Not können darauf verweisen. Ich hoffe, es wird Ihnen hilfreich sein.

Einige Produkte ergreifen Anti-Blutegel-Maßnahmen, um zu verhindern, dass auf ihre Produkte über gestohlene Links zugegriffen wird, z. B. Musik-Websites und Video-Websites in einem geschlossenen Ökosystem. Sie haben bereits für Urheberrechte bezahlt, also verzichten sie natürlich darauf Ich möchte nicht, dass Sie ihre Produkte kostenlos nutzen. Da sich aber viele Menschen auf Hotlinking spezialisieren, müssen wir auch die Prinzipien von Hotlinking, Anti-Hotlinking und der Umgehung von Anti-Hotlinking verstehen.

Hotlinks

Zitat der Definition von Hotlinks in der Baidu-Enzyklopädie:

Hotlinks beziehen sich auf Inhalte, die der Dienstanbieter selbst nicht mit technischen Mitteln oder anderen umgeht nützliche Endbenutzerschnittstellen (z. B. Werbung) und stellen Endbenutzern direkt die Dienstinhalte anderer Dienstanbieter auf ihren eigenen Websites bereit, um die Browsing- und Klickraten der Endbenutzer zu betrügen. Der Begünstigte stellt keine oder nur sehr wenige Ressourcen bereit, während der eigentliche Leistungserbringer keinen Nutzen erhält.

Regelmäßige Hotlinks

Wir wissen, dass die Website Dienste bereitstellt, indem sie eine HTML-Datei vom Server anfordert. Diese Datei enthält CSS/JS-Dateien und img/video-Tags Statische Ressourcen initiieren nacheinander Anforderungen und füllen den angegebenen Speicherort aus, wenn die HTML-Datei geladen wird, wodurch das Laden der gesamten Seite abgeschlossen wird.

Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

Solange wir also die URL dieses Bildes erhalten und es in unsere eigene HTML-Datei einbetten, können wir auf unserer Website darauf zugreifen, da der Zugriff auf die Ressourcen unabhängig erfolgt verschiedene HTTP-Anfragen, sodass wir auch die HTML-Dateien der Ursprungsseite filtern können. Dies ist das einfachste Hotlinking.

Gefahr: Wenn der Benutzer sie besucht, greift er nicht auf die Website mit gestohlenem Link zu, belegt aber dennoch die Bandbreitenressourcen der Website und der Betreiber muss für die Bandbreite bezahlen. Gleichzeitig haben Benutzer keinen Zugriff auf die Werbung, die Peripheriegeräte, die Öffentlichkeitsarbeit und andere Ressourcen der Website.

Verteiltes Hotlinking

Verteiltes Hotlinking ist komplizierter und erfordert die Bereitstellung spezieller Programme auf dem Server. Es ist nicht auf eine einzelne Website oder eine einzelne URL ausgerichtet, sondern Denn alle nützlichen Ressourcen im gesamten Netzwerk werden gestohlen und in einer eigenen Datenbank gespeichert. Wenn der Benutzer tatsächlich darauf zugreift, wird dieser vollständig in seinen eigenen Datenverkehr umgewandelt.

Gefahren: Die Ressourcen, die Sie durch Arbeit, Geld und Urheberrechtszahlungen erhalten, können von Websites mit gestohlenen Links, wie z. B. Online-Shop-Fotos, Zeitschriften, Fernsehserien usw., kostenlos genutzt werden. Infolgedessen können ihre Mitglieder und Dienste nicht profitabel sein.

Anti-Hotlinking-Klassifizierung

Nachdem wir den Schaden von Hotlinking zur Ursprungsseite verstanden haben, müssen wir natürlich einige Maßnahmen ergreifen, um dieses Verhalten zu verhindern und unsere eigenen Interessen zu schützen .

Wasserzeichen hinzufügen

Dies ist die einfachste Methode, um Wasserzeichen zu Bildern und anderen Ressourcen in Stapeln hinzuzufügen Um ihre eigenen Websites zu bewerben, suchen sie möglicherweise sogar aktiv nach solchen Hotlinks.

Ressourcenumbenennung

Da der Hotlink über die angegebene URL erfolgt, muss diese URL den Pfad und Namen der Ressource enthalten, daher muss die Datei von Zeit zu Zeit geändert werden oder Der Name des Verzeichnisses kann Hotlinks schnell vermeiden, führt aber auch dazu, dass der Ressourcen-Download unterbrochen wird.

Referenzseiten begrenzen

In den Header-Informationen der http-Anfrage gibt es ein Feld: referer, das angibt, von welcher Seite die Anfrage initiiert wird, falls dies der Fall ist ein separates Feld. Wenn es auf der Seite geöffnet oder vom Server angefordert wird, ist dieses Feld leer. Daher können wir Einschränkungen über den Wert des Referrerfelds festlegen. Wenn es sich um eine von uns erkannte Seite handelt, wird die Anforderung zurückgegeben. Da für den URL-Abgleich jedoch jedes Mal eine Datei auf der Whitelist geöffnet werden muss, wird die Leistung beeinträchtigt.

Verschlüsselungsauthentifizierung

Der Client verschlüsselt die Benutzerauthentifizierungsinformationen, indem er sie mit dem Namen der Ressource kombiniert, und verwendet die verschlüsselte Zeichenfolge als Parameter der zu initiierenden URL eine Anfrage. Die angeforderte Ressource wird erst zurückgegeben, nachdem der Server sie entschlüsselt und authentifiziert hat. Diese Methode wird hauptsächlich verwendet, um verteilte Hotlinks zu verhindern.

Anti-Hotlinking-Programm

Von den oben genannten drei Anti-Hotlinking-Methoden verwenden wir üblicherweise die dritte, die das Referer-Attribut verwendet, um das Anti-Hotlinking abzuschließen Wir teilen auch hauptsächlich diese Methode des Blutegelschutzes und des Blutegelschutzes.

Einschränkung des Backend-Programms

Diese Art der Einschränkung verbraucht serverseitige Rechenressourcen und wird daher nicht so häufig verwendet wie die Nginx-Einschränkung.

$from = parse_url($_SERVER['HTTP_REFERER']);
if ($from['host']!='xxx.com' && $from['host']!='www.xxx.com') {
    die('你丫在盗链');
}

Nginx-Einschränkungen

Dies kann durch Ändern der Nginx-Konfigurationsdatei erfolgen. Denken Sie daran, Nginx nach Abschluss der Änderung neu zu starten:

// 这里指定需要防盗链的资源,如gif/jpg等
location ~* \.(gif|jpg|png|jpeg)$ {
    // 设置资源的过期时间
    expires 30d;
    // 设置合法的引用页,也就是防盗链的白名单;
    // none blocked保证用户在新页面打开时依然能够打开,如果不希望用户能够保存删掉这两项
    valid_referers none blocked *.hugao8.com *.baidu.com *.google.com;
    // 对于非法的引用页,可以重写图片,也可以直接返回403或404页面
    if ($invalid_referer) {
        rewrite ^/http://www.it300.com/static/images/404.jpg;
        #return 404;
    }
}

Referer-Richtlinie

Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 首部识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

Referer属性出现在请求头中,也在请求头中被设置,但是在浏览器的安全策略里,该值无法被js所指定:

$.ajax({
        url: 'http://www.baidu.com',
        beforeSend(xhr) {
            // 在发送ajax请求前设置header头部
            xhr.setRequestHeader("Referer", "http://translate.google.com/");
            xhr.setRequestHeader("User-Agent", "stagefright/1.2 (Linux;Android 5.0)");
        },
        success(data) {
            console.log(data);
        },
        error(err) {
            console.log(err);
        }
});

然而浏览器会报错:

Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

<meta>
<a>
</a><a></a>

防反盗链

前端JS不能在头部设置Referer字段,和跨域一样是因为浏览器的安全策略,那么同样的在服务端进行请求就不会有这些限制,我们在服务端请求时就可以自由的修改Referer字段。

我们通过简单的PHP例子来完成这个功能:

<?php $url = &#39;http://t11.baidu.com/it/u=3008889497,862090385&fm=77&#39;;
$refer = &#39;https://www.baidu.com&#39;;
$ch = curl_init();
//以url的形式 进行请求
curl_setopt($ch, CURLOPT_URL, $url);
//以文件流的形式 进行返回  不直接输出到浏览器
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//浏览器发起请求 超时设置
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
//伪造来源地址 
curl_setopt ($ch, CURLOPT_REFERER, $refer);
$file = curl_exec($ch);
curl_close($ch);
header(&#39;Content-Type: text/html&#39;);
// 对图片进行base64编码,然后返回给前端展示
$file = base64_encode($file);
echo "<img  src=&#39;data:image/jpeg;base64,{$file}&#39; / alt="Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)" >";
?>

我们第一次请求注释了伪造来源地址这一行,第二次请求不注释这一行,这样可以验证执行结果:
Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

Was ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel)

总结

盗链和反盗链是一个对立面,技术不断升级,最终的目标也是为了开放资源和保护知识产权。在互联网生态里,我们通过反盗链保护我们的利益,也使用防反盗链的这种方式来扩大我们的内容,无论站在哪一方,都需要做到知己知彼。

Das obige ist der detaillierte Inhalt vonWas ist Hotlinking? So fälschen Sie den Referrer in PHP, um Anti-Leeching-Ressourcen anzufordern (mit Beispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was ist Cakephp?Nächster Artikel:Was ist Cakephp?