>  기사  >  백엔드 개발  >  PHP에서 핫링크를 금지하는 방법

PHP에서 핫링크를 금지하는 방법

藏色散人
藏色散人원래의
2020-09-01 10:11:023015검색

PHP에서 핫링크를 금지하는 방법: 먼저 웹사이트의 공개 파일에서 "$key=sdkfjwojf32413"을 정의한 다음 다운로드 페이지에서 임의의 숫자를 생성한 다음 마지막으로 실제 다운로드 주소를 생성합니다. 소프트웨어를 설치하고 인증서 코드를 세션에 저장하세요.

PHP에서 핫링크를 금지하는 방법

추천: "PHP 비디오 튜토리얼"

핫링크는 서비스 제공자 자체가 서비스를 제공하지 않고 기술적 수단을 사용하여 다른 유익한 최종 사용자 인터페이스(예: 광고)를 우회하는 콘텐츠를 의미합니다. , 최종 사용자에게 자신의 웹사이트에서 다른 서비스 제공업체의 서비스 콘텐츠를 직접 제공하여 최종 사용자의 탐색 및 클릭률을 속이는 행위입니다. 수혜자는 자원을 전혀 또는 거의 제공하지 않는 반면, 실제 서비스 제공자는 아무런 혜택도 받지 못합니다. 핫링크를 방지하는 것은 모든 웹사이트 개발자에게 중요한 작업입니다.

핫링크를 잘 방지하면 웹사이트 서버에 대한 부담을 크게 줄일 수 있습니다. 여기서는 PHP에서 핫링크 방지를 구현하는 방법을 공유합니다.

일반 다운로드 단계: 검색 -> 검색 결과 목록 출력 -> 소프트웨어 세부정보 페이지 입력 ->다운로드 버튼 클릭 ->다운로드 페이지 열기 ->다운로드를 클릭하여 다운로드 시작

내 방법은 다운로드 페이지에서 소란을 피우는 것입니다

먼저 $key=sdkfjwojf32413을 정의합니다. A key is the same

다운로드 페이지에서 난수 생성: $certcode = '84615354' (생성된 번호는 열 때마다 다릅니다)

그런 다음 다음을 사용하세요. 위의 두 변수와 소프트웨어 ID를 사용하여 md5() 암호화 문자열을 생성합니다

그런 다음 소프트웨어의 실제 다운로드 주소를 생성합니다: file.php?id=5&codekey=ksfjwofsdkfsf

여기서 ID는 소프트웨어 번호입니다. . $codekey=md5($id.$certcode.$key)를 기반으로 데이터베이스에서 소프트웨어 주소를 찾을 수 있습니다.
그런 다음 인증서 코드를 세션에 저장합니다.

file.php의 매개변수에서 코드키와 ID를 가져옵니다. , 공개 파일에서 $key를 가져온 다음 세션에서 $certcode를 가져옵니다.

코드키가 올바른지 확인하세요. 잘못된 경우 종료하고, 그렇지 않으면 다음 작업을 수행하세요

1. 세션 삭제(이 주소를 다시 열면 유효하지 않습니다)

2. 데이터베이스에서 소프트웨어 주소를 읽은 다음 소프트웨어 내용을 읽고 출력합니다(PHP 파일 사용 읽기 방식은 다운로드할 소프트웨어의 내용을 대신 출력합니다). 다운로드 주소를 직접 알려줌)

이렇게 다운로드 하려면 자신의 다운로드 페이지를 열어야 하고, 다운로드 페이지에서 주소를 열어서 다운로드해야 하는데, 다운로드 주소는 매번 나와있습니다. , 생성되는 난수가 다르기 때문입니다

다른 다운로드 주소에 접속하여도 다운로드가 불가능합니다.

확장 읽기(특정 구현):

1. Simple anti-hotlinking

$ADMIN[defaulturl] = "http://www.vvschool.cn/404.htm";//盗链返回的地址 
$okaysites = array("http://www.vvschool.cn/","http://www.siyizhu.com"); //白名单 
$ADMIN[url_1] = "http://www.vvschool.cn/temp/download/";//下载地点1 
$ADMIN[url_2] = "";//下载地点2,以此类推 
   
$reffer = $HTTP_REFERER; 
if($reffer) { 
$yes = 0; 
while(list($domain, $subarray) = each($okaysites)) { 
if (ereg($subarray,"$reffer")) { 
$yes = 1; 
} 
} 
$theu = "url"."_"."$site"; 
if ($ADMIN[$theu] AND $yes == 1) { 
header("Location: $ADMIN[$theu]/$file"); 
} else { 
header("Location: $ADMIN[defaulturl]"); 
} 
} else { 
header("Location: $ADMIN[defaulturl]"); 
}

파일 이름?site=1&file=파일 사용 방법: 위 코드를 dao4.php로 저장합니다. 예를 들어, verifycode.rar I 테스트에 사용된 코드는 내 사이트에서 다운로드 링크를 나타내는 데 사용됩니다.

2. 서버 안티 핫링크

3. 소프트웨어 다운로드 안티 핫링크 방법

//放置下载软件的根目录相对于当前脚本目录的相对目录 
$fileRelPath= "../../software"; 
//例外允许连接的网址,注意:自身域名不需要填入,设定为肯定可以下载, 
// 空字符串("")表示直接输入网址下载的情况 
$excludeReferArr= array("www.wreny.com","wreny.com"); 
chdir($fileRelPath); 
$fileRootPath= getcwd() ."/"; 
$filePath=$HTTP_GET_VARS["file"]; 
$url=parse_url($_SERVER["HTTP_REFERER"]); 
if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost,$excludeReferArr)){

(1) IIS 안티 -ISAPI_Rewrite를 사용하는 핫링크는 Windows에서 핫링크 방지 솔루션으로 사용할 수 있습니다. 실제로 다음은 참고할 수 있는 일반적인 아이디어입니다.

(2) 사진의 핫링크 방지, 핫링커를 사용하더라도 사진에 워터마크를 추가하는 것은 목표를 달성할 수 있을 뿐만 아니라 자신의 웹사이트를 홍보하는 것이기도 합니다.

위 내용은 PHP 안티 핫링크의 기본 아이디어와 설정 방법입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

위 내용은 PHP에서 핫링크를 금지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.