Heim >Backend-Entwicklung >PHP-Tutorial >So erhalten Sie mit PHP einen Referrer und ermitteln die Quelle, um illegalen Zugriff zu verhindern

So erhalten Sie mit PHP einen Referrer und ermitteln die Quelle, um illegalen Zugriff zu verhindern

慕斯
慕斯nach vorne
2021-06-22 10:01:026317Durchsuche

In diesem Artikel erfahren Sie, wie Sie mit PHP den Referrer abrufen, die Quelle ermitteln und illegalen Zugriff verhindern können. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

So erhalten Sie mit PHP einen Referrer und ermitteln die Quelle, um illegalen Zugriff zu verhindern

Der PHP-Code der Download-Seite down.php Jetzt habe ich festgestellt, dass die Download-Datei ausgegeben werden kann, wenn ich sie direkt mit Thunder oder Google Chrome öffne, und sie hat überhaupt keine Anti-Leeching-Wirkung. Jetzt möchte ich zulassen, dass nur diejenigen, die mit meiner eigenen Site verbunden sind, diese direkt verwenden. Diejenigen, die mit anderen Sites verbunden sind, und diejenigen, die diese Adresse direkt eingeben, werden zur Seite copy.htm weitergeleitet.

Die in PHP vordefinierte Servervariable $_SERVER["HTTP_REFERER"] kann die Quelle ermitteln.

$_SESSION['HTTP_REFERER'] kann die Quelladresse der vorherigen Verbindung des aktuellen Links abrufen, dh die URL-Adresse der vorherigen Seite, die mit der aktuellen Seite verknüpft ist.
Es wird im Allgemeinen verwendet, um festzustellen, wo der Betrachter auf den Link geklickt hat, um zu dieser Seite zu springen, also den sogenannten Ursprung. Es kann auch verwendet werden, um Hotlinking zu verhindern, indem der Ursprung ermittelt wird.
Zum Beispiel:

<?php
 $url_array = parse_url($_SESSION[&#39;HTTP_REFERER&#39;]); 
 //如果页面的域名不是服务器域名,就连接到登陆窗口 
 if($_SERVER[&#39;HTTP_HOST&#39;] != $url_array["host"]) { 
 header("location: login.php"); 
 exit; 
 } 
 ?>

Ein aktuelles Projekt muss verhindern, dass Benutzer illegal auf eine JSON-Seite zugreifen. Die grundlegende Lösung besteht darin, die Quelle zu bestimmen, um den Nicht-Aufruf-Zugriff einzuschränken:

$_SERVER[‘HTTP_REFERER’]:来路链接,可能带尾巴(如: 
可以通过php内置函数parse_url()来获取到当前网址(www.httple.net),即:
$refererUrl = parse_url($_SERVER[‘HTTP_REFERER’]);
$host = $refererUrl[‘host’];
$host的值即为来路的网址(www.httple.net)。
获取到了来路的网址之后,我们就可以通过这个网址来限制访问该页面的权限了。代码如下:
if(!isset($_SERVER[‘HTTP_REFERER’]) || $referurl[‘host’] !=”www.httple.net”) { header(“location: /”); 
//如果没有来路,或者来路不是本站,跳转到首页。 exit; }

Fügen Sie diese Codezeile oben ein JSON-Datenseite kann dieses Problem leicht gelöst werden.

Der Fehler dieser Verarbeitungsmethode: Die normalen Daten der Seite können durch Fälschung der Quelle erhalten werden.

Zugehöriger Code

Die Methode zum Abrufen der Quell-URL verwendet hauptsächlich die Funktion HTTP_REFERER in der Servervariablen. Der Code wird veröffentlicht:

function get_referer(){   
$url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL   
$str = str_replace("http://","",$url); //去掉http://   
$strdomain = explode("/",$str); // 以“/”分开成数组   
$domain = $strdomain[0]; //取第一个“/”以前的字符  
return $domain;  
}   

//对于百度、谷歌搜索引擎来路判断   
function get_seo(){  
$s = 0;   
if(strstr(get_referer(),&#39;baidu.com&#39;)){   
$s = 1;   
}   
else if(strstr(get_referer(),&#39;google.com.hk&#39;)){   
$s = 1;   
}   
return $se;    
}

php-Website Die Methode zum Abrufen der Quell-URL verwendet hauptsächlich die Verwendung von HTTP_REFERER Funktion in die Servervariable, der Code wird eingefügt:

function get_referer(){
$url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL
$str = str_replace(“http://”,””,$url); //去掉http://
$strdomain = explode(“/”,$str); // 以“/”分开成数组
$domain = $strdomain[0]; //取第一个“/”以前的字符
return $domain;
}

//对于百度、谷歌搜索引擎来路判断
function get_seo(){
$s = 0;
if(strstr(get_referer(),’baidu.com’)){
$s = 1;
}
else if(strstr(get_referer(),’google.com.hk’)){
$s = 1;
}
return $se;
}

Bei der Verarbeitung eines Formulars müssen wir die Möglichkeit einer statischen Übermittlung durch den Benutzer berücksichtigen. Discuz wurde anhand von Formhash beurteilt.

Hier verwende ich einen anderen Möglichkeit, die Beurteilungsseite zu verarbeiten. Natürlich kann diese Methode auch verwendet werden, um den Ursprung von HTTP_REFERER zu fälschen.

Der zweite Teil besteht darin, das Problem zu lösen, dass header('location: ) in PHP HTTP_REFERER auf der nächsten Seite nicht abrufen kann Nachdem Sie zur Seite gesprungen sind, können Sie der Seite nur einen Link hinzufügen und dann mit js das Klicken auf den Link simulieren, sodass die nächste Seite auf jeden Fall HTTP_REFERER Schlüsselwort erhält: document.getElementById('gourl').click( );

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo erhalten Sie mit PHP einen Referrer und ermitteln die Quelle, um illegalen Zugriff zu verhindern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen