불법 접근을 방지하기 위해 PHP를 사용하여 리퍼러를 얻고 소스를 확인하는 방법

慕斯
풀어 주다: 2023-04-10 09:00:01
앞으로
6260명이 탐색했습니다.

이 기사에서는 PHP를 사용하여 리퍼러를 획득하여 소스를 확인하고 불법 액세스를 방지하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

불법 접근을 방지하기 위해 PHP를 사용하여 리퍼러를 얻고 소스를 확인하는 방법

다운로드 페이지의 php 코드 down.php 이제 썬더나 구글 크롬으로 직접 열면 다운로드 파일이 출력될 수 있고, 안티리칭 효과가 전혀 없는 걸 발견했습니다. 이제 내 사이트에 연결된 사람들만 직접 사용할 수 있도록 허용하고 싶습니다. 다른 사이트에 연결된 사람들과 이 주소를 직접 입력한 사람들은 copy.htm 페이지로 이동합니다.

PHP에 미리 정의된 $_SERVER["HTTP_REFERER"] 서버 변수가 소스를 결정할 수 있습니다.

$_SESSION['HTTP_REFERER'] 는 현재 링크의 이전 연결 소스 주소, 즉 현재 페이지에 링크된 이전 페이지의 URL 주소를 가져올 수 있습니다.
일반적으로 시청자가 이 페이지로 이동하기 위해 링크를 클릭한 위치, 즉 소위 출처를 확인하는 데 사용됩니다. 출처를 확인하여 핫링크를 방지하는 데에도 사용할 수 있습니다.
예:

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

최근 프로젝트에서는 사용자가 json 페이지에 불법적으로 액세스하는 것을 방지해야 합니다. 기본 솔루션은 비통화 액세스를 제한하는 소스를 결정하는 것입니다.

$_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; }
로그인 후 복사

다음 코드 줄을 맨 위에 넣으세요. json 데이터 페이지를 사용하면 이 문제를 쉽게 해결할 수 있습니다.

이 처리 방법의 결함: 소스를 위조하면 페이지의 정상적인 데이터를 얻을 수 있습니다.

관련 코드

소스 Url을 가져오는 방법은 주로 서버 변수의 HTTP_REFERER 함수를 사용합니다. 코드는 다음과 같습니다.

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 웹사이트 소스 Url을 가져오는 방법은 주로 HTTP_REFERER를 사용합니다.

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;
}
로그인 후 복사

양식을 처리할 때 우리는 사용자의 정적 제출 가능성을 고려해야 합니다. Discuz는 이미 formhash를 기반으로 판단했습니다.

여기서는 다른 것을 사용합니다. 물론 이 방법은 HTTP_REFERER의 출처를 위조하는 데에도 사용할 수 있습니다.

두 번째 부분은 PHP의 header('location: )가 다음 페이지에서 HTTP_REFERER를 얻을 수 없는 문제를 해결하는 것입니다. 페이지로 이동한 후에는 페이지에 링크를 추가한 다음 js를 사용하여 링크 클릭을 시뮬레이션하면 다음 페이지에서 확실히 HTTP_REFERER 키워드를 받게 됩니다. document.getElementById('gourl').click( );

추천 학습: php 비디오 튜토리얼

위 내용은 불법 접근을 방지하기 위해 PHP를 사용하여 리퍼러를 얻고 소스를 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿