當前位置:才華齋>計算機>php語言>

PHP防盜鏈的基本思想

php語言 閱讀(2.44W)

網站盜鏈會大量消耗被盜鏈網站的頻寬,而真正的點選率也許會很小,嚴重損害了被盜鏈網站的利益。本文主要介紹用PHP實現防盜鏈的方法以及基本思想,希望對你有幫助,一起來看。

PHP防盜鏈的基本思想

盜鏈是指服務提供商自己不提供服務的內容,通過技術手段繞過其它有利益的最終使用者介面(如廣告),直接在自己的網站上向終端使用者提供其它服務提供商的服務內容,騙取終端使用者的瀏覽和點選率。受益者不提供資源或提供很少的資源,而真正的服務提供商卻得不到任何的收益。做好防止盜鏈的工作,是每個網站開發者的重要工作。

做好防盜鏈工作能給網站伺服器減少不少壓力,這裡我們分享一種php防盜鏈的實現方法:

一般的下載的步驟:查詢->輸出查詢結果列表->進入軟體詳細頁面->點選下載按鈕->開啟下載頁面->點選下載,開始下載

  我的方法就是在下載頁面做文章

首先在網站的公共檔案裡定義一個$key=sdkfjwojf32413這相當於一個金鑰一樣

在下載頁面生成一個隨機數:$certcode = '84615354' (每次開啟生成的都不一樣)

然後用以上兩個變數和軟體的ID生成一個md5()加密串

然後生成軟體的真實下載地址:

這裡的id是軟體的編號可以根據他從資料庫找到軟體地址 $codekey=md5($id.$certcode.$key)

  然後把certcode儲存到session裡,

在的引數裡面得到的codekey和id再從公共檔案裡得到$key 再從session裡得到$certcode

對codekey進麼驗證,看是否正確,如果不正確就退出,否則就進行如下操作

1、刪除session(再次開啟這個地址就無效了)

2、從資料庫裡讀取軟體地址,然後讀取軟體內容,並輸出(用PHP的檔案讀取方法輸出要下載的軟體內容而不是直接把地址給他下載)

這樣如果要下載,就必須開啟你自己的下載頁面,從你的下載頁面開啟地址才能進行下載,而且下載地址每次都不一樣,因為生成的隨機數不一樣

別的地方就算連到你的`下載地址,也是下載不了的。

拓展閱讀(具體實現):

  1.簡單防盜鏈

$ADMIN[defaulturl] = "";//盜鏈返回的地址

$okaysites = array("",""); //白名單

$ADMIN[url_1] = "";//下載地點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=檔案

  2.伺服器防盜鏈

  3.軟體下載的防盜鏈方法

//放置下載軟體的根目錄相對於當前指令碼目錄的相對目錄

$fileRelPath = "../../software";

//例外允許連線的網址,注意:自身域名不需要填入,設定為肯定可以下載,

// 空字串("")表示直接輸入網址下載的情況

$excludeReferArr = array("", "");

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)){

?>