這篇文章給大家介紹防盜鏈的原理是什么,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司主打移動網(wǎng)站、成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護、空間域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計。最后,要實現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計,我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
盜鏈的概念
盜鏈是指在自己的頁面上展示一些并不在自己服務(wù)器上的一些內(nèi)容, 獲取別人的資源地址,繞過別人的資源展示頁面,直接在自己的頁面上向最終用戶提供此內(nèi)容。 一般被盜鏈的都是圖片、 音樂、視頻、軟件等資源。通過盜鏈的手段可以減輕自己服務(wù)器的負擔
比如我直接在自己的網(wǎng)站上
這樣就可以直接展示百度的圖片,但是實際上是無法展示的(如下圖),之所以無法展示是因為百度的圖片做過防盜鏈處理
通過Refer或者簽名,網(wǎng)站可以檢測目標網(wǎng)頁訪問的來源網(wǎng)頁,如果是資源文件,則可以追蹤到顯示他的網(wǎng)頁地址 一旦檢測到來源不是本站,即進行阻止或者返回指定的頁面
Nginx模塊, ngx_http_referer_module用于阻擋來源非法域名的請求 nginx指令valid_refers,全局變量$invalid_refer 對資源的防盜鏈nginx配置為
location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$ { valid_referers none blocked test.com *.test.com; //加none的目的是確保瀏覽器可以直接訪問資源 if($invalid_referer) { #return 403; // 直接返回403 rewrite ^/ http://www.test.com/403.jpg;//返回指定提示圖片 } }
對目錄的防盜鏈nginx配置為
location /images/ { valid_referers none blocked test.com *.test.com; if($invalid_referer) { #return 403; rewrite ^/ http://www.test.com/403.jpg; }
但是傳統(tǒng)的防盜鏈也會存在一些問題,因為refer是可以偽造的, 所以可以使用加密簽名的方式來解決這個問題。 什么是加密簽名?就是當我們請求一個圖片的時候,我要給他帶一些簽名過去,然后返回圖片的時候我們判斷下簽名是否正確,相當于對一個暗號。
可以使用第三方模塊HttpAccessKeyModule來解決防盜鏈的問題,我們需要去安裝。
安裝好有這樣一個指令:
accesskey on|off 模塊開關(guān)
accesskey_hashmethod md5 | sha-1 簽名加密方式
accesskey_arg GET參數(shù)名稱
accesskey_signature 加密規(guī)則
location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$ { accesskey on; accesskey_hashmethod md5; accesskey_arg sign; accesskey_signature "mypass$remote_addr"; }
意思是mypass加客戶端ip通過md5加密 圖片文件代碼:
'; ?>
關(guān)于防盜鏈的原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。