이 기사에서는 PHP를 사용하여 리퍼러를 획득하여 소스를 확인하고 불법 액세스를 방지하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
다운로드 페이지의 php 코드 down.php 이제 썬더나 구글 크롬으로 직접 열면 다운로드 파일이 출력될 수 있고, 안티리칭 효과가 전혀 없는 걸 발견했습니다. 이제 내 사이트에 연결된 사람들만 직접 사용할 수 있도록 허용하고 싶습니다. 다른 사이트에 연결된 사람들과 이 주소를 직접 입력한 사람들은 copy.htm 페이지로 이동합니다.
PHP에 미리 정의된 $_SERVER["HTTP_REFERER"] 서버 변수가 소스를 결정할 수 있습니다.
$_SESSION['HTTP_REFERER'] 는 현재 링크의 이전 연결 소스 주소, 즉 현재 페이지에 링크된 이전 페이지의 URL 주소를 가져올 수 있습니다.
일반적으로 시청자가 이 페이지로 이동하기 위해 링크를 클릭한 위치, 즉 소위 출처를 확인하는 데 사용됩니다. 출처를 확인하여 핫링크를 방지하는 데에도 사용할 수 있습니다.
예:
<?php $url_array = parse_url($_SESSION['HTTP_REFERER']); //如果页面的域名不是服务器域名,就连接到登陆窗口 if($_SERVER['HTTP_HOST'] != $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(),'baidu.com')){ $s = 1; } else if(strstr(get_referer(),'google.com.hk')){ $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!