首頁  >  文章  >  後端開發  >  php如何禁止盜鏈

php如何禁止盜鏈

藏色散人
藏色散人原創
2020-09-01 10:11:023010瀏覽

php禁止盜鏈的方法:先在網站的公開檔案裡定義一個「$key=sdkfjwojf32413」;然後在下載頁產生一個隨機數;接著產生一個md5加密字串;最後產生軟體的真實下載地址,並把certcode儲存到session裡即可。

php如何禁止盜鏈

推薦:《PHP影片教學

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

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

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

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

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

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

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

然後產生軟體的真實下載位址:file.php?id =5&codekey=ksfjwofsdkfsf

這裡的id是軟體的編號可以根據他從資料庫找到軟體位址$codekey=md5($id.$certcode.$key)
然後把certcode儲存到session裡,

在file.php的參數裡面得到的codekey和id再從公共文件裡得到$key 再從session裡得到$certcode

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

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

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

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

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

拓展閱讀(具體實現):

1.簡單防盜鏈

$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,例如我測試用的validatecode.rar在我的網站裡面,則用以下程式碼表示下載連接.

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