PHP防止盜鏈的方法

防盜鏈的技術已經很普遍了,有些網站不喜歡自己的圖片被別的網站直接複製使用,便使用了防盜鏈的技術,這樣別人在直接複製使用網站圖片時,圖片便會按照程序的設定不顯示或顯示防盜鏈等字樣。

使用了防盜鏈技術,不僅可以防止自己的圖片被盜用,也可以節省自己站點下載圖片的流量,覺得還是蠻不錯的說,那麼在PHP環境下應該如何防止盜鏈呢?在PHP環境下我們知道通常都是使用Apache服務器,那麼主要看下Apache防盜鏈的方法吧,其實IIS也是同一個原理。

Apache防盜鏈:

大多數的虛擬主機都是Apache的,因此最方便的防盜鏈設置莫過於利用.htaccess文件了。網上搜索下方法很多,於是我總結了下,絕對好用的方法。把下面的代碼添加到.htaccess文件裏,修改下即可。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !60ie.net [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !twitter.com [NC]
RewriteCond %{HTTP_REFERER} !facebook.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.tw [NC]
RewriteCond %{HTTP_REFERER} !google.com.sg [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !mail.qq.com [NC]
RewriteCond %{HTTP_REFERER} !cn.bing.com [NC]
RewriteCond %{HTTP_REFERER} !image.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .(png|jpg|gif)$ [R,NC,L]

代碼解釋:

先看最後一行,我對網站上的png、jpg、gif文件做了防盜鏈保護,一旦我網站裏的圖片在上述白名單之外的網站裏出現,全部顯示最後一行代碼中的圖片。

Nginx防盜鏈:

Nginx不支持.htaccess,設置起來稍微麻煩了點。首先要用文本編輯器打開/usr/local/nginx/conf/nginx.conf這個文件(如果你使用的是vhost,則到vhost裏找相應的conf文件
),將如下代碼匹配在server{ }段裏面即可,注意我說的不是拷貝,而是匹配。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
valid_referers none blocked *.ilucong.com *.youdao.com *.zhuaxia.com *.xianguo.com *.google.cn *.google.com *.google.com.tw *.google.com.sg *.google.com.hk
*.bloglines.com image.soso.com cn.bing.com image.baidu.com *.feedburner.com *.feedsky.com;
if ($invalid_referer) {
rewrite ^/ ;
#return 404;
}
}
注意:儘量不要使用windows自帶的記事本編輯,可能會出現亂行;編輯完之後,重啓Ngnix服務方可生效

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章