Referer防盜鏈,是基於HTTP要求標頭中Referer欄位(例如,Referer黑白名單)來設定存取控制規則,實現對訪客的身份識別和過濾,防止網站資源被非法盜用。配置Referer黑白名單後,CDN會根據名單識別請求身份,允許或拒絕訪問請求。允許訪問請求,CDN會返回資源連結;拒絕訪問請求,CDN會返回403響應碼。本文為您介紹如何配置Referer防盜鏈。
背景資訊
Referer是HTTP要求標頭的一部分,攜帶了HTTP請求的來源地址資訊(協議+網域名稱+查詢參數),可用於識別請求來源。
Referer防盜鏈是一種伺服器端設定的存取控制機制,用於防止未經授權的網站盜用伺服器資源。具體來說,當一個使用者從某個網頁點選連結訪問另一個網頁時,瀏覽器會自動在HTTP要求標頭中添加一個Referer欄位,這個欄位記錄了使用者是從哪個網頁跳轉過來的。
ApsaraVideo for VOD中Referer防盜鏈功能預設不啟用,表示任何網站均可訪問您的資源。
將某個網域名稱添加到Referer黑名單或白名單後,CDN會預設將該網域名稱的泛網域名稱加入對應的規則名單。例如,如果您填寫
aliyundoc.com,則最終配置生效的是*.aliyundoc.com,即所有子級網域名稱都會生效。當網域名稱在進行Range請求時,由於Range第二次請求的時候會被瀏覽器加上Referer頭,因此需要對該網域名稱Referer防盜鏈設定為白名單。
啟用ApsaraVideo for VOD的Referer防盜鏈功能後,如需在阿里雲官方網站的ApsaraVideo for VOD控制台播放預覽視頻,則可以在Referer白名單配置中增加網域名稱
vod.console.alibabacloud.com。
使用情境
Referer防盜鏈主要用於保護網站的資源不被其他網站直接引用或盜用,常見的使用情境包括:
著作權保護:某些網站發布的內容受著作權保護,使用Referer防盜鏈可以限制只有特定授權網站才能訪問這些內容,保護著作權利益。
防止熱鏈盜用:使用者可以配置Referer防盜鏈,確保自己的資源只能在特定來源網站上使用,防止其他網站直接引用自己的資源,減少熱鏈盜用問題。
提高網站安全性:通過Referer防盜鏈,使用者可以設定只允許特定來源網站訪問自己的網站資源,防止惡意盜鏈行為、惡意訪問或盜取敏感資訊。
控制流程量來源:使用者可以使用Referer防盜鏈來限制只有特定來源網站的流量才能訪問自己的網站,有效控制流程量來源,提高網站的穩定性和安全性。
綜上所述,您可以根據自己的需求,在不同的使用情境中使用CDN的Referer防盜鏈功能,保護網站資源、提高安全性和控制流程量來源。
工作原理
伺服器端檢查每個請求的Referer欄位,如果Referer欄位不是來自自己信任的網站,就拒絕提供服務。這樣可以防止其他網站直接連結到自己的資源,從而節省頻寬和伺服器資源。如果配置了Referer防盜鏈,CDN將根據請求的Referer與配置的Referer規則來判斷是否允許此請求:
如果瀏覽器攜帶的Referer與黑名單Referer匹配,或與白名單Referer不匹配,則CDN將拒絕該請求的訪問。
如果瀏覽器攜帶的Referer與白名單Referer匹配,則CDN將允許該請求的訪問。
操作步驟
- 登入ApsaraVideo for VOD控制台。
- 在點播控制台左側導覽列的組態管理地區,單擊,進入網域名稱管理頁面。
在網域名稱管理頁面,找到目標網域名稱,單擊操作列的配置。
在指定網域名稱的左側導覽列,單擊存取控制。
在Referer防盜鏈頁簽,單擊修改配置。
根據業務需求,設定Referer黑名单或白名单。
參數
說明
Refer类型
黑名单
黑名單內的網域名稱均無法訪問當前的資源。
白名单
只有白名單內的網域名稱能訪問當前資源,白名單以外的網域名稱均無法訪問當前的資源。
說明黑名單和白名單互斥,同一時間您只能選擇其中一種方式。
规则
支援添加多個Referer名單,使用斷行符號符進行分隔,每個Referer名單前不能加空格符。
支援使用星號(*)作為萬用字元。例如,配置
*.developer.aliyundoc.com,可以匹配到image.developer.aliyundoc.com或video.developer.aliyundoc.com等。
說明Referer防盜鏈規則的總長度最長不超過60 KB。
重新導向URL
當請求被攔截後不會再返回403,而是會返回302+Location頭,該項為Location頭的值,必須以
http://或者https://開頭,例如:http://www.example.com。進階配置
允许通过浏览器地址栏直接访问资源URL
系統預設未勾選。當勾選該選項時,無論配置的是Referer黑名單還是白名單,系統不攔截空Referer請求,CDN節點都將允許使用者訪問當前的資源。空Referer包括兩種情況:
使用者請求中不攜帶Referer頭。
使用者請求中攜帶了Referer頭,但值為空白。
精確匹配
未勾選精確匹配時:
系統預設未勾選。
不支援精確匹配,可模糊比對。
支援尾碼匹配。不能在網域名稱左邊加“.”,實際下發配置時系統會自動在網域名稱左邊加上“.”。
Referer規則列表填寫
example.com,匹配example.com和<任一字元>.example.com。Referer規則列表填寫
a*b.example.com,匹配a<任一字元>b.example.com和<任一字元>.a<任一字元>b.example.com。
勾選精確匹配時:
支援精確匹配,不匹配子網域名稱。
Referer規則列表填寫
example.com,僅匹配example.com。Referer規則列表填寫
a*b.example.com,僅匹配a<任一字元>b.example.com。
不支援尾碼匹配。
忽略scheme
無論配置的是Referer黑名單還是白名單:
未勾選忽略scheme時,如果使用者請求中的Referer沒有帶上HTTP或HTTPS協議頭部,則按照無效Referer進行處理。例如Referer格式為
www.example.com時無效,只有Referer格式為https://www.*.com或http://www.*.com才有效。勾選忽略scheme後,如果使用者請求中的Referer沒有帶上HTTP或HTTPS協議頭部,則依然當作有效Referer進行處理。例如Referer格式為
www.example.com依然有效。
單擊確定,完成配置。
Referer匹配邏輯
通過以下名單配置為例,闡述Referer頭部的匹配邏輯。如果一個請求未匹配白名單或者匹配了黑名單,CDN會拒絕請求並返回403狀態代碼。
名單配置 | 使用者請求中的Referer值 | 匹配結果 | 匹配邏輯說明 |
| http://www.example.com/img.jpg | 是 | Referer頭部中的網域名稱匹配名單。 |
http://www.example.com:80/img.jpg | 是 | ||
www.example.com | 見匹配邏輯說明 |
| |
http://aaa.example.com | 是 | 無論是否勾選精確匹配,結果均為匹配。 | |
http://aaa.bbb.example.com | 見匹配邏輯說明 |
| |
http://example.com | 否 | Referer頭部中的次層網域不匹配名單中的泛網域名稱條目。原因是泛網域名稱不包含次層網域本身。 | |
http://www.example.net | 不匹配任何規則 | 既未匹配白名單,也未匹配黑名單,按照預設策略處理,允許訪問。 |