Maison >développement back-end >tutoriel php >Comment utiliser PHP pour obtenir un référent et déterminer la source afin d'empêcher tout accès illégal

Comment utiliser PHP pour obtenir un référent et déterminer la source afin d'empêcher tout accès illégal

慕斯
慕斯avant
2021-06-22 10:01:026330parcourir

Cet article présentera comment utiliser PHP pour obtenir le référent afin de déterminer la source et d'empêcher tout accès illégal ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser PHP pour obtenir un référent et déterminer la source afin d'empêcher tout accès illégal

Le code php de la page de téléchargement down.php Maintenant, j'ai découvert que si je l'ouvre directement avec Thunder ou Google Chrome, le fichier de téléchargement peut être généré, et il a. aucun effet anti-sangsue du tout. Maintenant, je souhaite autoriser uniquement ceux connectés à mon propre site à l'utiliser directement. Ceux connectés à d'autres sites et ceux qui saisissent directement cette adresse accéderont à la page copy.htm.

La variable serveur prédéfinie $_SERVER["HTTP_REFERER"] en PHP peut déterminer la source.

$_SESSION['HTTP_REFERER'] peut obtenir l'adresse source de la connexion précédente du lien actuel, c'est-à-dire l'adresse URL de la page précédente liée à la page actuelle.
Il est généralement utilisé pour déterminer où le spectateur a cliqué sur le lien pour accéder à cette page, c'est-à-dire ce qu'on appelle l'origine. Il peut également être utilisé pour empêcher les liens chauds en déterminant l'origine.
Par exemple :

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

Récemment, il y a un projet qui doit empêcher les utilisateurs d'accéder illégalement à une page json. La solution de base est de déterminer la source pour restreindre l'accès sans appel :

$_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; }

Mettre cette ligne de code en haut de la page de données json peut facilement résoudre ce problème.

Le défaut de ce mode de traitement : les données normales de la page peuvent être obtenues en falsifiant la source.

Code associé

La méthode d'obtention de l'URL source utilise principalement la fonction HTTP_REFERER dans la variable du serveur Le code est collé :

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;    
}

le site Web php obtient l'URL source. La méthode utilise principalement la fonction HTTP_REFERER dans la variable serveur. Le code est collé :


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;
}

Lors du traitement d'un formulaire, il faut considérer que Discuz a déjà jugé la possibilité de soumission statique par l'utilisateur en fonction du formhash

Ici, j'utilise une autre façon de déterminer l'origine de la page. Bien sûr, cette méthode peut également être utilisée pour forger l'origine HTTP_REFERER

<.> Chapitre La deuxième partie consiste à résoudre le problème selon lequel

header('location:

en PHP ne peut pas obtenir HTTP_REFERER sur la page suivante après avoir sauté à la page. Ici, nous pouvons seulement ajouter un lien vers la page, puis utilisez js pour simuler un clic sur le lien, afin que la page suivante soit définitivement reçue HTTP_REFERER Mot clé : document.getElementById('gourl').click();Apprentissage recommandé :

tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer