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

PHP圖片防盜鏈工具:Hotlink Protection

編輯:關於PHP編程

Hotlink Protection的原理是利用Apache的RewriteCond功能,在得到文件請求時檢測請求REFERER,只有是本網站的URL才放行。這個原理很適合自制頭像的保護,因為頭像只應該在本網站內部使用。

下面以discuz為例,說一下使用方法:烈……火……網……防……盜……鏈

Discuz的內置頭像保存在/forum/images/avatars/目錄下,我只想保護這些內置頭像,用戶上傳的頭像和其他圖片不去限制別人引用,因此RewriteCond代碼放置在此目錄即可:

Copy to ClipboardLiehuo.Net Codes引用的內容:[www.bkjia.com] RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://bkjia.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://bkjia.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.bkjia.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.bkjia.com$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png)$ http://www.bkjia.com/img/hp.gif [R,NC]

四個RewriteCond排除四種訪問自己網站的方法,分別是不帶www訪問網站下某頁面、不帶www訪問網站首頁、帶www訪問網站下某頁面和帶www訪問網站首頁。符合這四種情況外的HTTP_REFERER,並且文件以jpg或jpeg、gif、png結尾則轉到http://www.bkjia.com/img/hp.gif文件處。

把這個文件保存為.htaccess,上傳到/forum/images/avatars/目錄下即可。如想保護整個網站的圖片則上傳到根目錄;如想保護其他格式的文件則直接在RewriteRule中添加擴展名。

順便說一句:這種方法有一定的局限性,比如某些下載工具可以發送自定的“引用”值;此外有些用戶安裝的防火牆、殺毒軟件會阻止浏覽器發送HTTP_REFERER值給服務器,因此他們正常浏覽會受影響。真不知道這類防火牆軟件廠商是怎麼想的,因為這最多只涉及隱私(而且主要是HTTP_REFERER網站的隱私,跟訪問者沒什麼關系),而網絡安全無關。

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