• 返回列表

    [其他] 如何通過htaccess防盜鏈

    新建個記事本文件,寫入如下內容,域名換成你自己的,保存后通過ftp上傳的你的網站根目錄,重命名為.htaccess即可。
    1. SetEnvIfNoCase Referer "^http://vincyfans\.com/" local_ref=1
    2. SetEnvIfNoCase Referer "^http://www\.vincyfans\.com/" local_ref=1
    3. <FilesMatch "\.(jpg|zip|rar|gif|bmp|torrent|mp3|mpg|rm|ra|mov)">
    4. Order Allow,Deny
    5. Allow from env=local_ref
    6. Allow from 127.0.0.1
    7. </FilesMatch>
    復制代碼



    多個域名設置方法如下:

    1. # 開啟Rewrite模塊
    2. RewriteEngine On
    3. # 定義要保護的文件夾,建議只要保護上傳文件夾(/data/attachment/)就可以,如果是所有目錄路徑就寫/
    4. RewriteBase /data/attachment/
    5. #允許空的來源,因為用戶可能手動輸入圖片網址
    6. RewriteCond %{HTTP_REFERER} !^$ [NC]
    7. #允許的網站,一行一個域名
    8. RewriteCond %{HTTP_REFERER} !verydz.com [NC]
    9. RewriteCond %{HTTP_REFERER} !discuz.net [NC]

    10. #括號中的是要保護的文件拓展名,這里只保護了 gif,jpg,png,再加上出錯時的圖片地址 unavailable.png
    11. RewriteRule .*\.(gif|jpg|png)$ http://example.com/unavailable.png [R,NC,L]
    復制代碼

    通過htaccess防盜鏈詳解

    以下內容來源于網絡:
    http標準協議中有專門的字段記錄referer

    一來可以追溯上一個入站地址是什么

    二來對于資源文件,可以跟蹤到包含顯示他的網頁地址是什么。

    因此所有防盜鏈方法都是基于這個Referer字段

    網上比較多的2種

    一種是使用apache 文件FileMatch限制,在httpd.conf中增加 ( 其實也可以將把下面的語句存成一個.htaccess文件),并放到你的網站 的根目錄(就是www/html目錄),這樣子別人就沒有辦法盜連你的東東了~~
    1. SetEnvIfNoCase Referer "^http://yahoo.com/" local_ref=1
    2. Order Allow,Deny
    3. Allow from env=local_ref
    4. Allow from 127.0.0.1
    復制代碼


    這種很方便禁止非允許訪問URL引用各種資源文件

    請大家注意,把第一句"^http://yahoo.com/"改為你的網站,比如我的網站是: http://www.linji.cn
    我應該這么寫的 "^http://www.linji.cn/"

    第二種是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目錄權限限制
    在虛擬主機根目錄增加.htaccess文件,描述從定向,把非本地地址refer的圖片文件都從定向到警告圖片或者警告網頁上。

    首先要確認你的服務器 或空間的服務器解譯引擎為Apache2,還有支持.htaccess客戶設置文件,如果你有自己的服務器就請先對./conf/httpd.conf 文件做以下修改 找到:#LoadModule rewrite_module modules/mod_rewrite.so
    把前面的 # 給去掉

    找到第一個 AllowOverride None 改為 AllowOverride All 重啟Apache2服務器

    接下就是做一個 .htaccess 文件了,其 .htaccess 文件內容為

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://aaoo.net/ .*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://aaoo.net $ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/ .*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net $ [NC]
    RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe )$http://down.yoyo.com.ru/err.html [R,NC,L]


    其中有色的地方都是要改為你的:
     紅色 :就是改為你提供下載頁面的地址,也就是只有通過這個地址才可以下載你所提供的東東。
     藍色 :就是要保護文件的擴展名(以|分開),也就是說以這些為擴展名的文件只有通過紅色的地址才可以訪問。
     綠色 :如果不是通過紅色的地址訪問藍色這些為擴展名的文件時就回重定向到綠色地址上。

    這個方法有個好處是,不同的虛擬主機用不同的描述定義。

    接下就是怎么用 .htaccess 文件來實現防盜鏈了。首先要在空間上建兩個目錄(當然目錄名隨你),一個為 web 另一個為 down ,web 是用來放下載頁面的(或下載程序),down 當然就是放你提供的東東的啦,把 .htaccess 文件的紅色部分改一下,改為http://你的域名/web。藍色部分改為你要保護文件的擴展名。綠色部分改為http://你的域名/web。改后保存.htaccess 文件把它上傳到 down 目錄。



    實例:
    1. <IfModule mod_rewrite.c>
    2. # 開啟Rewrite模塊
    3. RewriteEngine On
    4. # 定義要保護的文件夾,建議只要保護上傳文件夾(/wp-content/uploads/)就可以,主題文件夾之類的就算了
    5. RewriteBase /wp-content/uploads/
    6. #允許空的來源,因為用戶可能手動輸入圖片網址
    7. RewriteCond %{HTTP_REFERER} !^$ [NC]
    8. #允許自己的網站訪問啦
    9. RewriteCond %{HTTP_REFERER} !photozero.net [NC]
    10. #允許幾個常用的在線閱讀器的訪問
    11. RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
    12. RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
    13. RewriteCond %{HTTP_REFERER} !google.com [NC]
    14. RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
    15. RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
    16. #括號中的是要保護的文件拓展名,這里只保護了 gif,jpg,png,再加上出錯時的圖片地址 unavailable.png
    17. RewriteRule .*\.(gif|jpg|png)$ http://example.com/unavailable.png [R,NC,L]
    18. </IfModule>
    復制代碼


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

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

    允許空“HTTP_REFERER”的訪問,即允許用戶在瀏覽器地址欄中直接輸入圖片地址時圖片文件的顯示。一般而言,這是可選的,不過,建議這么設置,如果強迫必須具有“HTTP_REFERER”才能訪問,可能會帶來某些問題,比如說在用戶通過代理服務器訪問時。

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

    設置允許訪問的HTTP來源,包括我們的站點自身、Google、Baidu、Bloglines、Feedburner等。

    1. RewriteRule .*\.(gif|jpg|png)$ http://www.aaa.com/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等,不同文件擴展名間使用“|”分割。

    這樣的話,就可以基本做到簡單的防止被盜鏈情況的發生,而且可以盡最大可能的減少服務器流量的無畏消耗,當然了,如果你不在意這點流量的話,那么可以不用考慮上述設置啦!

    haccess在線編輯工具
    中文化界面(支持十種語言,包括正體中文),功能比較完善:
    支持:
    • 是否顯示文章列表(是否顯示網站索引目錄)
    • 是否啟用密碼保護(可對單個目錄啟用密碼保護)
    • 各種錯誤頁面設置(400 Bad Request401 Auth Req’d402 Payment Req’d403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Auth Repid408 Request Time Out409 Conficting Request410 Gone411 Content Len Req’d412 Precondition Failed413 Entity Too Long414 URI Too Long500 Int, Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Ver Not Sup…)
    • 預設置頁面(設置任意頁面為主頁)
    • www轉向設置(將www.重定向)
    • 301 302轉址(用來重定向)
    • 存取限制(用來防盜鏈)
      現在 就去看看:http://www.htaccesseditor.com/sc.shtml

    還有第三種:

    我在解決blog禁止盜鏈的時候,發現個問題,也算個好方法。blog把所有資源都自己管理起來,用resserver.php來動態顯示,這樣統一的入口方便添加權限操作。同時造成上面2種方法無法使用,因為不再是apache直接訪問資源文件,而是php 通過文件讀取。

    因此只能在代碼 中做手腳:在讀取資源文件輸出之前,加如下判斷代碼
    1. $referer = $_SERVER['HTTP_REFERER'];
    2. $selfurl = $_SERVER['HTTP_HOST'];
    3. if(false == strpos($referer,$selfurl)){
    4.     echo '非法盜鏈!';
    5.     exit(1);
    6. }
    復制代碼

    這里有些偷懶,直接看引用地址中是否包含host地址,不過原理就是這樣,判斷referer是否是本站地址。我們常常在下載的時候,也碰到盜鏈網站無法下載,報盜鏈的問題。要下載這類文件最簡單的方法就是改referer比方flashget中,網址下面的"引用"一欄中,直接填寫下載地址就可以了。

    .htaccess是一個完整的文件名,不是***.htaccess或其它格式另外,上傳.htaccess文件時,必須使用二進制模式 。每一個放置.htaccess的目錄和其子目錄都會被.htaccess影響。例如,在/abc/目錄下放置了一個.htaccess文件,那么/abc/和/abc/def/內所有的文件都會被它影響,但/index.html不會被它影響,這一點是很重要的。


    實例功能 :文檔訪問的密碼保護

    要利用.htaccess對某個目錄下的文檔設定訪問用戶和對應的密碼,首先要做的是生成一個.htpasswd的文本文檔,例如:

    zheng:y4E7Ep8e7EYV

    這里密碼經過加密,用戶可以自己找些工具將密碼加密成.htaccess支持的編碼。該文檔最好不要放在www目錄下,建議放在www根目錄文檔之外,這樣更為安全些。

    有了授權用戶文檔,可以在.htaccess中加入如下指令了:
    1. AuthUserFile .htpasswd的服務器目錄
    2. AuthGroupFile /dev/null (需要授權訪問的目錄)
    3. AuthName EnterPassword
    4. AuthType Basic (授權類型)
    5. require user wsabstract (允許訪問的用戶,如果希望表中所有用戶都允許,可以使用 require valid-user)
    復制代碼

    TOP

    返回列表
    新婚少妇莹莹系列