如何選擇適合自己網站的防盜鏈

  • 2020 年 9 月 23 日
  • 筆記

當你的網站被攻擊的時候,當你的資源出現異常訪問的時候,又或者是你需要一些特殊的對資源訪問的限制時,防盜鏈的選擇你一定要看看。

作為一個優秀的當代攻城獅/程序猿,相信好多人在業餘時間都會經營一個自己的博客網站,用於記錄一些日常生活小心得,或者是工作遇到過的坑,還可以和他人一起討論一起成長。看着博客的內容一點點累積,看着訪問人數的不斷增加,往往讓人感覺每天又多了一些期待和成就。

二狗子也有自己的博客。可是有一天,他在又拍雲後台發現自己的博客帶寬突然飆高了。當時二狗子還以為是有什麼技術大佬發現了自己,而自己馬上就要成為一代網紅技術了,他歡天喜地的下載了訪問日誌進行分析,結果發現好多國外 IP,而且還有一些蜘蛛爬蟲、迅雷的客戶端標識。原來不是一炮走紅而是被攻擊了啊!這還不趕緊限制一下,不然白花花的流量費用家裡有礦也傷不起呀。

二狗子飛快找到又拍雲在線客服薇薇,大天使薇薇小姐姐從不讓人失望,馬上為二狗子推薦了一系列的又拍雲訪問控制功能。

薇薇告訴二狗子通過頻繁訪問攻擊對手網站,通過爬蟲等工具爬取圖片,甚至直接在網站上引用他人的資源鏈接等等,這些都是網站管理員經常面臨的問題。針對這類問題,又拍雲提供了多種訪問控制功能,包括 IP 黑白名單,地區訪問限制,Referer 防盜鏈,User-Agent 防盜鏈,Token 防盜鏈等等。而具體對應不同的場景也需要選擇不同的防盜鏈,具體選擇和介紹薇薇仔細的和二狗子說了起來。

IP 黑名單:「我要把你拉黑!」

如果有一天,你突然發現網站帶寬飆高了。通過又拍雲提供的訪問日誌分析發現,有一個 1.2.3.4 的 IP 竟然一直在訪問網站,而且你還可以判斷出它是惡意訪問。這時打開又拍雲控制台,將這個 IP 加到了 IP 黑名單里,你會發現帶寬瞬間就下去了。

這到底是怎麼做到的呢?大家都知道 IP 地址在互聯網上具有唯一性,在請求過程中,客戶端的 IP 地址通常保持不變。當客戶端向服務端(CDN 節點)發起請求時,服務端可以明確地獲取到客戶端的 IP 地址,因此可以利用 IP 地址的這些特點進行訪問控制。把你不希望訪問到你網站的 IP 加入 IP 黑名單,從而禁止他們訪問你的網站。同時你也可以設置 IP 白名單,僅允許在白名單內的 IP 訪問你的資源,其餘 IP 一律不允許訪問,以此來降低遭到攻擊的可能性。

地區訪問限制:「我要限制你出境!」

如果你有一個用於上傳搞笑視頻的的自建網站,但是你希望網站內容只能被國內用戶訪問,不想流到國外,這個時候要怎麼辦呢?很簡單,只需要你打開又拍雲控制台,在地區訪問限制項將中國加入白名單就可以啦。

地區訪問限制的工作原理和 IP 黑名單一樣運用了 IP 地址的唯一性,通過檢查 IP 歸屬地進行限制。你可以將希望訪問到文件的地區運營商加入訪問限制白名單,不希望的加入訪問限制黑名單,從而控制讓誰來看到你的文件。

Referer 防盜鏈:「我就不想讓你用!」

如果有些時候你發現你的網站整體訪問量並不高,但是其中某些圖片、視頻,或者部分元素訪問量卻很高。同時你通過篩選日誌發現,訪問圖片的用戶都是來自一些來源不明的網站。這很大可能代表着你的文件被盜鏈了。

什麼是盜鏈呢?盜鏈就是有一些網站沒有經過你的同意就引用了你網站的內容,但是他們並不是下載了你的內容,而是直接將你的資源鏈接外鏈過去,這樣就能達成在增加他們網站訪問的同時,還讓你來掏這部分訪問流量的「冤枉錢」。要避開這些吸血蟲也非常容易,你只需要打開又拍雲控制台,到 Referer 防盜鏈里添加白名單,將自己的網站域名加進去就可以禁止其他網站引用你的資源鏈接了。

好,這裡暫停一下,二狗子知道大家可能對 Referer 是什麼東西很是迷茫,正好薇薇小姐姐有好好講過,二狗子就來給大家複述一下。

Referer 代表請求來源。當客戶端向服務器發送請求時,一般都會攜帶 Referer 頭,告知服務器該請求是從哪個頁面鏈接過來的。當請求發送到 CDN 節點後,CDN 節點檢查請求頭中所攜帶的 Referer 字段的信息,然後禁止或者允許符合特定規則(支持正則匹配)的 Referer 請求。

也就是說,只要你開啟了 Referer 防盜鏈,那麼從其他網站過來的請求就會被服務器禁止,媽媽再也不用擔心網站資源被盜鏈啦。

User-Agent 防盜鏈:「你的手機不能看!」

當你的網站是提供一些文件下載的業務,你有自己的客戶端,並且只希望用戶從你的客戶端去下載,而不希望文件被用戶通過迅雷或其他下載工具下載時,你一定會需要又拍雲 User-Agent 防盜鏈。

User Agent 中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,能夠讓服務器識別客戶端使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等信息。它和 Referer 防盜鏈類似,在開啟後 CDN 會針對 HTTP 請求頭中的 User-Agent 信息,禁止或者允許符合特定 User-Agent 規則的請求。

每一個客戶端都擁有自己的專屬 User-Agent,我們可以抓包請求頭查詢到 User-Agent ,然後將自己的 User-Agent 加入白名單,或者將其他想要禁止的客戶端 User-Agent 加入黑名單,從而保證用戶只從自己允許的客戶端下載內容。

講完了上面這四種防盜鏈,薇薇告訴二狗子,這四種其實是基礎防盜鏈,主要是針對客戶端請求過程中所攜帶的一些關鍵信息來驗證請求的合法性。這些防盜鏈的優點是規則簡單,配置和使用都很方便。但是在請求過程中,這些信息其實都是可以偽造的,因此如果需要更加嚴密的守衛文件安全,可以考慮使用高級防盜鏈規則。

二狗子當然是表示有更好的選擇肯定是要繼續了解的,並拜託薇薇再好好講講高級防盜鏈。

高級防盜鏈

Token 防盜鏈:「想讓你看你才能看!」

Token 防盜鏈適用於具有時效性訪問的資源文件,通過設置 Token 密鑰,配合簽名過期時間來控制資源內容的訪問時限。Token 防盜鏈採用 md5 算法,將密鑰、過期時間、文件路徑等信息所計算的 md5 值加入到 URL 中,當 CDN 節點在驗證請求時,除了驗證過期時間,同時還會驗證該 md5 值是否匹配,對於不匹配的 md5,說明 URL 被篡改,即使請求未過期也會禁止服務。Token 防盜鏈的過期時間可自行設置,如果你的網站有些內容,希望付費才能訪問,且規定訪問有有效期。就可以通過 Token 防盜鏈來實現。Token 防盜鏈加密性最高,但是因為時效性等原因,使用不當可能會引起網站訪問異常,請慎重開啟!

回源鑒權:「回家吧,寶貝!」

如果不希望對方知曉你的防盜鏈規則原理,或者 CDN 無法滿足的特殊防盜鏈需求,也許也需適合你的防盜鏈選擇就是回源鑒權了。

回源鑒權是一種高級的防盜鏈方式,需要在源站配置一台鑒權服務器,並設置鑒權方式。之後 CDN 邊緣節點每次接受到請求之後,都會回用戶源站的鑒權服務器進行驗證,驗證通過之後才認為是合法請求,CDN 才會繼續提供服務。

回源鑒權適用於對防盜鏈有很高實時性要求的場景,當然因為每次請求都需要鑒權服務器的驗證,在開啟該功能時也需要考慮到訪問量過大時鑒權服務器的壓力。

自定義防盜鏈:「我的地盤我做主!」

如果你喜歡 DIY 功能,想要屬於自己的獨一無二的防盜鏈模式。又拍雲強大的邊緣規則功能也為你提供了防盜鏈 DIY 服務,通過提供的語法自行設置算法規則,既靈活又高效,讓你的防盜鏈獨一無二。

具體規則可以參考:邊緣規則案例 – 自定義防盜鏈[//help.upyun.com/knowledge-base/cdn-edgerules-cases/#1e38081e887aae5ae9ae4b989e998b2e79b97e993be]

聽完薇薇的講解,二狗子才知道不同的防盜鏈可以針對不同的網絡訪問疑難雜症。一個小小的防盜鏈還分了這麼多的種類,可謂種類繁多。看來只有親自體驗過才能知道什麼是適合自己的防盜鏈了!

推薦閱讀

HTTP/3 來了,你了解它么?

SSL 證書變革之時已至,這些變化你都清楚嗎?