如何配置Apache 防止圖片盜鏈

來源:互聯網
上載者:User

 獨立建博的使用者經常面對的一個問題就是伺服器的流量問題,而網站檔案被盜鏈是其中最

為主要的部分。所謂盜鏈,是指其他網站直接連結我們網站上的檔案,一般來說,盜鏈的

對象大多為很耗頻寬的大體積檔案,片、視頻等。這樣造成的後果主要有:增加了服

務器的流量負擔,影響我們網站的訪問速度。

如果你用的是Apache伺服器,那麼使用.htaccess檔案就可以很方便的進行設定,從而防

止其他網站的使用者盜鏈我們網站的檔案。

Apache中的.htaccess檔案
.htaccess檔案是Apache中相當重要的設定檔,其格式為純文字,它提供了針對目錄改

變更配置置的方法,通過在一個特定的文檔目錄中放置一個包含一個或多個指令的檔案,以作

用於此目錄及其所有子目錄。

通過.htaccess檔案,可以實現簡單地很多在IIS中很繁瑣甚至無法實現的功能,如密碼保

護、禁止顯示目錄列表、阻止/允許特定的IP地址、實現網址的301 重新導向等等。

正如上面所說,.htaccess檔案將影響其所在的目錄及其子目錄,因此,如果我們要保護

的內容(此處以防止圖片盜鏈為例,即圖片)位於網站內多個目錄下,可以考慮將其放在

根目錄下;而如果圖片有單獨的子目錄如“/images/”,則只需將其放置在該目錄下(當

然也可以放到根目錄中)。

需要注意的是,如果通過FTP方式將建立好的.htaccess上傳到伺服器上,傳輸模式應為

ASCII而非Binary。上傳到伺服器後,應將其屬性通過CHMOD修改為644 或“RW-R–R–”

,這樣,可以保證伺服器能夠使用同時無法通過瀏覽器修改,當然,.htaccess的可讀屬

性也存在一定的風險:攻擊者可通過它找出您要保護的對象或認證檔案位置——解決辦法

是將認證檔案.htpasswd放到網站根目錄之外,這樣,便無法通過網路找到它了。

使用.htaccess禁止盜鏈
通過.htaccess來防止網站的圖片、壓縮檔、或視頻等非Html檔案被盜鏈的方法相當簡

單,通過在該檔案中加入幾句命令即可保護我們寶貴的頻寬。例如本站的設定如下:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !webeta.cn [NC]
RewriteCond %{HTTP_REFERER} !ikuaizi.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .*/.(gif|jpg)$ http://webeta.cn/no.png [R,NC,L]

簡單的解釋一下上述語句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]

允許空“HTTP_REFERER”的訪問,即允許使用者在瀏覽器地址欄中直接輸入圖片地址時圖片

檔案的顯示。一般而言,這是可選的,不過,建議這麼設定,如果強迫必須具有

“HTTP_REFERER”才能訪問,可能會帶來某些問題,比如說在使用者通過Proxy 伺服器訪問時

2、RewriteCond %{HTTP_REFERER} !webeta.cn [NC]

設定允許訪問的HTTP來源,包括我們的網站自身、Google、Baidu、Bloglines、

Feedburner等。

3、RewriteRule .*/.(gif|jpg|png)$ http://webeta.cn/no.png [R,NC,L]

定義被盜鏈時替代的圖片,讓所有盜鏈 jpg、gif、png 等檔案的網頁,顯示根目錄下的

no.png 檔案。注意:替換顯示的圖片不要放在設定防盜鏈的目錄中,並且該圖片檔案體

積越小越好。當然你也可以不設定替換圖片,而是使用下面的語句即可:

RewriteRule .*/.(gif|jpg|png)$ - [F]

4、說明一下其中的R、NC 和 L

R 就是轉向的意思
NC 指的是不區分大小寫
L 的作用是指明本次轉向到此結束,後續的轉向不受先前判斷語句的影響

5、防止盜鏈的檔案類型

上例中是 gif、jpg、png,而根據需要,可更改或添加其他檔案類型,如rar、mov等,不

同副檔名間使用“|”分割。

這樣的話,就可以基本做到簡單的防止被盜鏈情況的發生,而且可以盡最大可能的減少服

務器流量的無畏消耗,當然了,如果你不在意這點流量的話,那麼可以不用考慮上述設定

啦!

 

要讓apache防盜串連,首先要讓apache支援.htaccess客戶設定檔案,還要增加

mod_rewrite模組。以下是我的編譯安裝過程。
1. 安裝apache增加mod_rewrite模組
tar xfzv httpd-2.0.54.tar.gz
cd httpd-2.0.54
./configure --prefix=/usr/local/httpd --enable-module=most --enable-shared=max

--enable-rewrite
--enable-rewrite將od_rewrite模組編譯進來
make
make install
查看apache編譯進來的模組
[root@TFP httpd-2.0.54]# /usr/local/httpd/bin/apachectl-l
Compiled in modules:
 core.c
 mod_access.c //支援.htaccess檔案
 mod_auth.c
 mod_include.c
 mod_log_config.c
 mod_env.c
 mod_setenvif.c
 prefork.c
 http_core.c
 mod_mime.c
 mod_status.c
 mod_autoindex.c
 mod_asis.c
 mod_cgi.c
 mod_negotiation.c
 mod_dir.c
 mod_imap.c
 mod_actions.c
 mod_userdir.c
 mod_alias.c
 mod_rewrite.c //已經將od_rewrite編譯進來了
 mod_so.c
[root@TFP httpd-2.0.54]#
2.設定apache設定檔httpd.conf

 Options FollowSymLinks
 AllowOverride All 將None修改為All

AllowOverride All 將None修改為All
修改預設APACHE名去掉#ServerName前的#設定為127.0.0.1
ServerName 127.0.0.1
設定虛擬機器主機

NameVirtualHost 220.202.19.82

 DocumentRoot /home/down
 ServerName down.sy165.cn

重啟Apache2伺服器
接下就是做一個 .htaccess 檔案了,其 .htaccess 檔案內容為
RewriteEngine on
RewriteCond % !^http://www.xxx.com/.*$[NC]
RewriteCond % !^http://www.xxx.com$[NC]
RewriteRule .*/.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://www.xxx.com/err.htm

[R,NC]

將這個檔案放到/home/down目錄下
RewriteCond % !^http://www.xxx.com/.*$[NC]
只允許通過www.xxx.com/*才能下載down.sy165.cn下的檔案。
RewriteCond % !^http://www.xxx.com$[NC]
只允許通過www.xxx.com才能下載down.sy165.cn下的檔案
RewriteRule .*/.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://www.xxx.com/err.htm

[R,NC]
jpg|jpeg|gif|png|bmp|rar|zip|exe是要保護的內容,如果島串連將跳轉到

http://www.xxx.com/err.htm

 

沒辦法馬上採取措施,防止盜鏈,以下是從網上找到的方法,經測試有效:

1、假設允許連結圖片的主機網域名稱為:www.eygle.com
2、修改httpd.conf,增加如下配置

SetEnvIfNoCase Referer "^http://www.eygle.com/" local_ref=1

Order Allow,Deny
Allow from env=local_ref

這個簡單的應用不光可以解決圖片盜鏈的問題,稍加修改還可以防止任意檔案盜鏈下載的問題。

使用以上的方法當從非指定的主機連結圖片時,圖片將無法顯示,如果希望顯示一張“禁止盜鏈”的圖片,我們可以用mod_rewrite 來實現。

首先在安裝 apache 時要加上 --enable-rewrite 參數載入 mod_rewrite 模組。

假設“禁止盜鏈”的圖片為www.eygle.com.gif,我們在 httpd.conf 中可以這樣配置:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.eygle.com/.*$ [NC]
RewriteRule /.(jpg|jpg)$ http://www.eygle.com/www.eygle.com.gif [R,L]

當主機的圖片被盜鏈時,只會看到 www.eygle.com.gif 這張圖片!

很抱歉要採取這樣的手段.因為頻寬實在是不允許.

希望沒有影響到大家,對於善意的引用,請大家告訴我網站,我會取消相應的限制.

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.