PHP防盜鏈的基本思想 防盜鏈的設(shè)置方法
盜鏈是指服務(wù)提供商自己不提供服務(wù)的內(nèi)容,通過技術(shù)手段繞過其它有利益的最終用戶界面(如廣告),直接在自己的網(wǎng)站上向最終用戶提供其它服務(wù)提供商的服務(wù)內(nèi)容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供很少的資源,而真正的服務(wù)提供商卻得不到任何的收益。做好防止盜鏈的工作,是每個網(wǎng)站開發(fā)者的重要工作。
做好防盜鏈工作能給網(wǎng)站服務(wù)器減少不少壓力,這里我們分享一種php防盜鏈的實現(xiàn)方法:
一般的下載的步驟:查找->輸出查找結(jié)果列表->進入軟件詳細頁面->點擊下載按鈕->打開下載頁面->點擊下載,開始下載
我的方法就是在下載頁面做文章
首先在網(wǎng)站的公共文件里定義一個$key=sdkfjwojf32413這相當于一個密鑰一樣
在下載頁面生成一個隨機數(shù):$certcode = '84615354' (每次打開生成的都不一樣)
然后用以上兩個變量和軟件的ID生成一個md5()加密串
然后生成軟件的真實下載地址:file.php?id=5&codekey=ksfjwofsdkfsf
這里的id是軟件的編號可以根據(jù)他從數(shù)據(jù)庫找到軟件地址 $codekey=md5($id.$certcode.$key)
然后把certcode保存到session里,
在file.php的參數(shù)里面得到的codekey和id再從公共文件里得到$key 再從session里得到$certcode
對codekey進么驗證,看是否正確,如果不正確就退出,否則就進行如下操作
1、刪除session(再次打開這個地址就無效了)
2、從數(shù)據(jù)庫里讀取軟件地址,然后讀取軟件內(nèi)容,并輸出(用PHP的文件讀取方法輸出要下載的軟件內(nèi)容而不是直接把地址給他下載)
這樣如果要下載,就必須打開你自己的下載頁面,從你的下載頁面打開地址才能進行下載,而且下載地址每次都不一樣,因為生成的隨機數(shù)不一樣
別的地方就算連到你的下載地址,也是下載不了的。
拓展閱讀(具體實現(xiàn)):
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]");
}?>
使用方法:將上述代碼保存為dao4.php,比如我測試用的validatecode.rar在我的站點里面,則用以下代碼表示下載連接.
文件名?site=1&file=文件
2.服務(wù)器防盜鏈
3.軟件下載的防盜鏈方法
//放置下載軟件的根目錄相對于當前腳本目錄的相對目錄
$fileRelPath = "../../software";
//例外允許連接的網(wǎng)址,注意:自身域名不需要填入,設(shè)定為肯定可以下載,
// 空字符串("")表示直接輸入網(wǎng)址下載的情況
$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) 圖片反盜鏈,在圖片中加入水印,雖然盜鏈者可以達到目的,但是卻也在為自己的網(wǎng)站做宣傳。
以上就是PHP防盜鏈的基本思想和設(shè)置方法,希望對大家的學習有所幫助。
相關(guān)文章
PHP7導出Excel報ERR_EMPTY_RESPONSE解決方法
在本篇文章中小編給大家整理了關(guān)于PHP7導出Excel報ERR_EMPTY_RESPONSE的解決方法,需要的朋友們學習下。2019-04-04
PHP獲取數(shù)組表示的路徑方法分析【數(shù)組轉(zhuǎn)字符串】
這篇文章主要介紹了PHP獲取數(shù)組表示的路徑,結(jié)合實例形式對比分析了數(shù)組轉(zhuǎn)字符串的實現(xiàn)技巧,需要的朋友可以參考下2017-09-09
mysql 中InnoDB和MyISAM的區(qū)別分析小結(jié)
InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點,視具體應用而定?;镜牟顒e為:MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持已經(jīng)外部鍵等高級數(shù)據(jù)庫功能。2008-04-04

