程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP做好防盜鏈的設置方法

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.簡單防盜鏈

    1. $ADMIN[defaulturl] = "http://www.vvschool.cn/404.htm";//盜鏈返回的地址  
    2. $okaysites = array("http://www.vvschool.cn/","http://www.siyizhu.com"); //白名單   
    3. $ADMIN[url_1] = "http://www.vvschool.cn/temp/download/";//下載地點1  
    4. $ADMIN[url_2] = "";//下載地點2,以此類推  
    5.  
    6. $reffer = $HTTP_REFERER;  
    7. if($reffer) {  
    8. $yes = 0;  
    9. while(list($domain, $subarray) = each($okaysites)) {  
    10. if (ereg($subarray,"$reffer")) {  
    11. $yes = 1;  
    12. }  
    13. }  
    14. $theu = "url"."_"."$site";  
    15. if ($ADMIN[$theu] AND $yes == 1) {  
    16. header("Location: $ADMIN[$theu]/$file");  
    17. } else {  
    18. header("Location: $ADMIN[defaulturl]");  
    19. }  
    20. } else {  
    21. header("Location: $ADMIN[defaulturl]");  
    22. }?> 

    使用方法:將上述代碼保存為dao4.php,比如我測試用的validatecode.rar在我的站點http://vvschool.cn/temp/download裡面,則用以下代碼表示下載連接.

    文件名?site=1&file=文件

    2.服務器防盜鏈

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

    1. //放置下載軟件的根目錄相對於當前腳本目錄的相對目錄  
    2. $fileRelPath = "../../software";  
    3. //例外允許連接的網址,注意:自身域名不需要填入,設定為肯定可以下載,  
    4. // 空字符串("")表示直接輸入網址下載的情況  
    5. $excludeReferArr = array("www.wreny.com", "wreny.com");  
    6. chdir($fileRelPath);  
    7. $fileRootPath = getcwd() ."/";  
    8. $filePath=$HTTP_GET_VARS["file"];  
    9. $url=parse_url($_SERVER["HTTP_REFERER"]);  
    10. if($url[host]!=$_SERVER["HTTP_HOST"] && !in_array($referHost, $excludeReferArr)){   
    11. ?> 

    其實,反盜鏈方式也有不少, 這裡只列出一個大概思想作為參考:⑴ IIS 反盜鏈, 利用ISAPI_Rewrite,可作為Windows下反盜鏈的一個解決方案;⑵ 圖片反盜鏈,在圖片中加入水印,雖然盜鏈者可以達到目的,但是卻也在為自己的網站做宣傳。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved