安基網 首頁 系統 Web技術 查看內容

傳說中圖片防盜鏈的愛恨情仇

2019-4-20 10:23| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 我們先來了解了解防盜鏈的原理,在 http 協議中,如果從一個頁面跳到另一個頁面,header字段里面會帶個 Referer。圖片服務器通過檢測 Referer 是否來自規定域名,來進行防盜鏈。

原理

注:這里有個很有趣的就是 Referrer 和 Referer 的故事了感興趣的自行去了解下

我們先來了解了解防盜鏈的原理,在 http 協議中,如果從一個頁面跳到另一個頁面,header字段里面會帶個 Referer。圖片服務器通過檢測 Referer 是否來自規定域名,來進行防盜鏈。

如果盜用網站是 https 的 協議,而圖片鏈接是 http 的話,則從 https 向 http 發起的請求會因為安全性的規定,而不帶 referer,從而實現防盜鏈的繞過。官方輸出圖片的時候,判斷了來源(Referer),就是從哪個網站訪問這個圖片,如果是你的網站去加載這個圖片,那么 Referer 就是:你的網站地址;你的網址肯定沒在官方的白名單內,(當然作為可操作性極強的瀏覽器來說 referer 是完全可以偽造一個官方的 URL 這樣也也就也可以饒過限制🚫)所以就看不到圖片了。

因此,若不發送 Referer,也就是沒有來源。那么官方那邊,就認為是從瀏覽器直接訪問的,所以就能加載正常的圖片了。

目的

盜鏈是指在自己的頁面上展示一些并不在自己服務器上的內容。通常的做法是通過技術手段獲得它人服務器上的資源地址,繞過別人的資源展示頁面,直接在自己的頁面上向最終用戶提供此內容。比較常見的是一些小站盜用大站的資源(圖片、音樂、視頻),對于這些小站來說,通過盜鏈的方法可以減輕自己服務器的負擔,因為真實的空間和流量均是來自別人的服務器。對大站造成的影響確實徒徒增加了服務器壓力,用戶還不是自己的😅

于是乎防盜鏈就是防止這種行為的產生,實施防盜鏈系統后,因為屏蔽了那些盜鏈的間接資源請求,從而可以大大減輕服務器及帶寬的壓力,也正如此,越來越多的站點都開始實施防盜鏈技術。


實現

nginx
location ~* \.(gif|jpg|png|bmp)$ {    
    valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;    
    if ($invalid_referer) {        
        return 403;        
        #rewrite ^/ http://www.xxx.com/403.jpg;    
    }
}復制代碼

以上所有來至xxx.com和域名中包含googlebaidu的站點都可以訪問到當前站點的圖片,如果來源域名(白名單列表)不在這個列表中。

那么$invalid_referer等于 1,在if語句中返回一個 403 給用戶,這樣用戶便會看到一個 403 的頁面,如果使用下面的rewrite,那么盜鏈的圖片都會顯示 403.jpg。

apache

在根目錄下創建.htaccess 文件


RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !phpddt.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule .*\.(rar|zip)$ http://www.xxx.com/ [R,NC,L]復制代碼


這段話也可寫在Apache配置文件當中

.htaccess文件將影響其所在的目錄及其子目錄。你可以將其放在根目錄或項目的子目錄

上面這段代碼也是很容易理解的:

RewriteCond %{HTTP_REFERER} !^$ [NC]復制代碼

允許空的來源,即用戶瀏覽器手動屬于則允許訪問文件。

RewriteCond %{HTTP_REFERER} !phpddt.com [NC]復制代碼

允許站點自身訪問,同理,后面還要允許百度,谷歌,和一些訂閱源訪問。

RewriteRule .*\.(rar|zip)$ http://www.xxx.com/ [R,NC,L]復制代碼

這里可以設置防止盜鏈的類型,如果盜鏈可以跳轉到網站首頁,本站沒有做圖片防盜鏈,如果你做圖片防盜鏈可以設置被盜鏈的替代圖片:

RewriteRule .*\.(gif|jpg|png)$ http://xxx.com/logo.png [R,NC,L]復制代碼

破解

😄道高一尺魔高一丈既然知道原理那么就來看看一些常用的破解方案如果你有更好的記得給我留言。

1.  如果盜用圖片資源是http協議那么盜用網址可以使用 https 去請求會因為安全性的規定,而不帶 referer,從而實現防盜鏈的繞過。


2. 在 HTML 代碼的 head 中添加一句

3.  

4. https://images.weserv.nl/?url=`${你的圖片地址}`

因為網址是國外的速度有點慢效果還行,目的就是返回一個不受限制的圖片,但是 GIF 格式會返回jpg也就是沒有了動畫效果。

5. 利用iframe偽造請求referer

function showImg( url ) {
        var frameid = 'frameimg' + Math.random();
        window.img = ''+url+'?'+Math.random()+'\' />
        

Tag標簽: 內容

小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://juejin.im/post/5cb6eaf951882532a376875e

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人
1

路過

雞蛋

剛表態過的朋友 (1 人)

相關閱讀

最新評論

 最新
返回頂部
云南快乐十分开奖结果前三