nginx之實現防盜煉

2021-10-21 02:38:31 字數 2140 閱讀 2869

盜鏈是一種損害原有**合法利益,給原**所在伺服器造成額外負擔的非法行為。要採取防盜煉的措施,

首先需要了解盜鏈的實現原理。

客戶端向伺服器請求資源時,為了減少網路頻寬,提高響應時間,伺服器一般不會一次將所有資源完整地傳

回給客戶端。比如在請求乙個網頁時,首先會傳回該網頁的文字內容,當客戶端瀏覽器在解析文字的過程中

發現有存在時,會再次向伺服器發起對該資源的請求,伺服器將儲存的資源再傳送給客戶端。

接到其他站點的伺服器上去了,這就形成了盜鏈行為。

比如內網使用者通過internet訪問網域名稱為www.test.com這個伺服器上的web服務,而該伺服器沒有儲存

資源實際上是來自其他的伺服器。

取防盜煉的措施來幹這個工作,結果就是,a**想請求所需要的資源,通過url的方式,獲取的可能不是原

來的了,出現404或者別的替代了。如果通過瀏覽器直接開啟url,那麼仍然有可能顯示404,

這就是防盜煉。

非法訪問並不會給**帶來利益或好處,相反,這會浪費**的頻寬,增加伺服器的連線壓力,比如有些網
要實現防盜煉,需要了解http協議中的請求頭部的referer頭域和採用url的格式表示訪問當前網頁或者文

件的源位址。通過該頭域的值,我們可以檢測到訪問目標資源的源位址。這樣,如果我們檢測到referer頭

域中 的值並不是自己站點內的url,就採取組織措施,實現防盜煉。

需要注意是,這種實現可以限制大多數普通的非法請求,但不能限制有目的的請求,因為這種方式可以通過

偽造referer資訊來繞過,因此該方法不能完全阻止所有盜鏈行為。

使用ngx_http_accesskey_module模組或lua指令碼實現

1.valid_referer:

nginx配置中有乙個指令valid_referers,用來獲取referer頭域中的值,並且根據該值的情況給

nginx全域性變數$invalid_referer的值,如果referer頭域中沒有符合valid_referers指令配置

的值,$invalid_referer變數將會被賦值為1。

valid_referer指令的語法結構為:

valid_referers none | blocked | server_names | string ....;

none 檢測referer頭域不存在的請求

blocked 檢測referer頭域的值被防火牆或者**伺服器刪除或偽裝的情況。

這種情況下,該頭域的值不以「http://」或者「https://」開頭

server_names 設定乙個或多個url,檢測referer頭域的值是否是這些url中的某個。

從nginx 0.5.33以後支援使用萬用字元「*」。

2.ngx_http_accesskey_module:通過金鑰方式進行防盜煉;

而這個key是由**將使用者的某個特徵值進行md5加密而生成。

#表示對gif、jpg、png、swf、flv字尾的檔案實行防盜煉

}或者 針對目錄防止盜鏈

location /images/

}

location /download
訪問測試指令碼download.php:

$ipkey

= md5(

"mypass"

.$_server

['remote_addr'])

;$output_add_key=".

$ipkey

.">download_add_key";

$output_org_url

="download_org_path";

echo

$output_add_key

;echo

$output_org_url

;?>

參考文章:

1.2.

3.4.

5.

配置Nginx實現防盜煉功能

準備兩台linux,用第二台linux主機來通過拿第一台主機的鏈結來展現 改動index.html新增 root localhost cd usr local nginx html root localhost html ls 50x.html index.html root localhost h...

nginx防盜煉 s3防盜煉

nginx防盜煉 編輯檔案 usr local nginx conf nginx.conf 以上 解釋如下 1 location中指定要防篡改的檔案型別 2 valid referers指定資源訪問是通過以下幾種方式為合法 none 直接通過url訪問,無referer值的情況 blocked re...

nginx 防盜煉心得

後台是利用http伺服器nginx和tomcat在linux環境中,本來,如果是這樣的話,就可以進行處理這樣的請求。思路是 獲取許可權,看這個請求是否有許可權進行訪問,但是,我們在tomcat的service.xml目錄裡面配置了絕對路徑 這就造成了,不需要經過專案,只要tomcat進行開啟就可以訪...