阿里雲 OSS 如何設定防盜鏈, 上個月圖床流量耗費50G+,請求次數10W+,什麼鬼?

犬小哈發表於2019-05-18

歡迎關注個人微信公眾號: 小哈學Java, 文末分享阿里 P8 高階架構師吐血總結的 《Java 核心知識整理&面試.pdf》資源連結!!

個人網站: https://www.exception.site/essay/how-to-set-aliyun-oss-http-referer

阿里雲OSS防盜鏈

目錄

一、背景

二、背後有啥貓膩

三、什麼是盜鏈?

四、為什麼會被盜鏈?

五、OSS 設定防盜鏈

六、驗證一下效果

七、另外一些應對手段

一、背景

小哈前天陸續接到三個電話,但都因為忙於工作、下雨天等各種因素導致沒接上,電話均來自杭州,心理一想,估計是阿里雲的客服吧,因為之前也會偶爾接到他們的電話,比如回訪之類的。

感覺應該也不是什麼要緊的事兒。直到晚上,躺在床上休息的時候,無意翻動手機,鬼使神差的,我點開了簡訊檢視。

PS: 小哈平常不怎麼主動去翻簡訊,簡訊上常年數字 1000+,主要裡面內容基本上是一些驗證碼啊、垃圾簡訊啊啥的,也懶得去清理。

手機簡訊1000+

無意間看到下面這條簡訊:

oss欠費通知

打了一個激靈,事情並不簡單,如果還不及時續費,網站圖片(小哈網站圖片均儲存在阿里雲 OSS 物件儲存上)都將無法訪問!

嚇得我趕緊又續費了 50 塊錢!

充五十塊錢

二、背後有啥貓膩

暫時解決了 OSS 快到期的問題後,我開始回想整個事情的經過。OSS 當時開通的是按時付費的,因為使用的比較少,選擇按時付費要更划算一些。

但是這一個月來,小哈寫部落格頻率高了一些,另一方面,也為了公眾號文章能有個良好的閱讀體驗,也是能用圖片展示的,就儘量少上一行程式碼。

但是小哈的個站,每天的訪問量只有可憐的幾十個IP, 但是 OSS 後臺的統計是下面這個鬼樣子的:

oss上個月使用情況

儲存用量暫且不說,外網流出流量 50G+,圖片讀請求 10w+, 什麼鬼啊!這個資料對於每天訪問幾十個IP的個站,絕對是不正常的!

支出情況

由於是按小時付費,峰值的時候,每小時就耗費5塊大洋,這誰頂得住啊,賬戶上就那點錢,不欠費才怪呢!

問題原因,小哈首先想到的是圖片被盜鏈了!

三、什麼是盜鏈?

oss檔案請求圖譜

以下來自百度百科官方解釋:

盜鏈是指服務提供商自己不提供服務的內容,通過技術手段繞過其它有利益的終端使用者介面(如廣告),直接在自己的網站上向終端使用者提供其它服務提供商的服務內容,騙取終端使用者的瀏覽和點選率。受益者不提供資源或提供很少的資源,而真正的服務提供商卻得不到任何的收益。

通俗來說,就是儲存在小哈圖片伺服器上圖片,在未經過授權的情況下,被別人擅自使用了。

四、為什麼會被盜鏈?

有一些類似於下圖中爬蟲網站,每天大批量的爬取文章,憑著自己網站權重高,即使不是原創,也能在百度中排名靠前,賺取廣告費啥的,這裡不得不吐槽一下百度。

好了,迴歸正題,這些爬蟲網站沒有自己的圖片伺服器(因為要錢),而是直接引用的原文的圖片連結:

盜鏈網站

盜鏈網站使用的圖片連結地址

最終,這些圖片的請求流量,全都由圖片的所有者來買單。

五、OSS 設定防盜鏈

OSS 是按使用量收費的服務,為了減少儲存於 OSS 的資料被其他人盜鏈而產生額外費用,OSS本身是支援設定Referer,基於 HTTP 和 HTTPS header 中表頭欄位Referer 的防盜鏈方法。

我們可以通過控制檯為自己的儲存空間設定 Referer 欄位的白名單、以及是否允許 Referer 欄位為空的請求訪問。

接下來,進入阿里雲控制檯,設定 OSS 白名單,這裡我設定為自己的網站域名 www.exception.site, 也就是說 header 請求頭中, Referer 為 www.exception.site 的網站,才能被夠允許訪問,否則直接拒絕:

OSS設定防盜鏈

  • :選擇需要設定防盜鏈的 Bucket;
  • :設定防盜鏈 HTTP Referer 白名單;
  • :儲存;

六、驗證一下效果

6.1 Referer 為空測試

通過 curl 命令來訪問一下 bucket 中的某張圖片,此時 header 頭中的 Referer 屬性值為空,看下是否能夠正常訪問:

隨機訪問一下圖片

可以看到請求失敗 AccessDenied.

6.2 Referer 一個不在白名單的域名測試

通過 -e 引數傳遞一個未設定在白名單中的地址,看能夠訪問成功:

不存在於oss白名單中的地址訪問測試

依然不能夠訪問成功,測試正常!

再來驗證下上面說的盜鏈網站是否還能夠正常訪問,首先我們清空瀏覽器快取:

圖片全部打不開了

Nice!圖片已經打不開了。

舒服了

6.3 存在於白名單中的域名測試

這裡小哈直接訪問自己的網站來驗證效果:

看下個人網站是否能夠正常訪問

圖片請求 header 頭的 Referer 屬性值與設定的一致,個人網站圖片均能夠正常訪問。

七、另外一些應對手段

除了防盜鏈的設定,目前來看按小時付費套餐已經不太合適了,在阿里雲上購買一個下行流量包,半年6個月,每個月50G流量,價格60塊大洋,當然了,超出的得另算。

阿里雲半年流量包

如果說未來流量繼續增大的話,那就要考慮帶過期時間的圖片訪問、CDN, 以及購買回源流量包了,那就是後話了,有機會小哈再給大家分享。下期見!

Ref

免費分享 | 面試&學習福利資源

最近在網上發現一個不錯的 PDF 資源《Java 核心知識&面試.pdf》分享給大家,不光是面試,學習,你都值得擁有!!!

獲取方式: 關注公眾號: 小哈學Java, 後臺回覆資源,既可免費無套路獲取資源連結,下面是目錄以及部分截圖:

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

重要的事情說兩遍,關注公眾號: 小哈學Java, 後臺回覆資源,既可免費無套路獲取資源連結 !!!

歡迎關注微信公眾號: 小哈學Java

關注微信公眾號【小哈學Java】,回覆【資源】,即可免費無套路領取資源連結哦

相關文章