全部產品
Search
文件中心

ApsaraVideo VOD:配置Referer防盜鏈

更新時間:Dec 27, 2024

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將允許該請求的訪問。

操作步驟

  1. 登入ApsaraVideo for VOD控制台
  2. 在點播控制台左側導覽列的組態管理地區,單擊分發加速配置 > 網域名稱管理,進入網域名稱管理頁面。
  3. 網域名稱管理頁面,找到目標網域名稱,單擊操作列的配置

  4. 在指定網域名稱的左側導覽列,單擊存取控制

  5. Referer防盜鏈頁簽,單擊修改配置

  6. 根據業務需求,設定Referer黑名单白名单

    參數

    說明

    Refer类型

    • 黑名单

      黑名單內的網域名稱均無法訪問當前的資源。

    • 白名单

      只有白名單內的網域名稱能訪問當前資源,白名單以外的網域名稱均無法訪問當前的資源。

    說明

    黑名單和白名單互斥,同一時間您只能選擇其中一種方式。

    规则

    • 支援添加多個Referer名單,使用斷行符號符進行分隔,每個Referer名單前不能加空格符。

    • 支援使用星號(*)作為萬用字元。例如,配置*.developer.aliyundoc.com,可以匹配到image.developer.aliyundoc.comvideo.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.*.comhttp://www.*.com才有效。

    • 勾選忽略scheme後,如果使用者請求中的Referer沒有帶上HTTP或HTTPS協議頭部,則依然當作有效Referer進行處理。例如Referer格式為www.example.com依然有效。

  7. 單擊確定,完成配置。

Referer匹配邏輯

通過以下名單配置為例,闡述Referer頭部的匹配邏輯。如果一個請求未匹配白名單或者匹配了黑名單,CDN會拒絕請求並返回403狀態代碼。

名單配置

使用者請求中的Referer值

匹配結果

匹配邏輯說明

  • www.example.com

  • *.example.com

http://www.example.com/img.jpg

Referer頭部中的網域名稱匹配名單。

http://www.example.com:80/img.jpg

www.example.com

見匹配邏輯說明

  • 如果未勾選忽略scheme,結果是不匹配。原因是使用者請求中的Referer沒有帶上HTTP或HTTPS協議頭部。

  • 如果勾選忽略scheme,結果是匹配。

http://aaa.example.com

無論是否勾選精確匹配,結果均為匹配。

http://aaa.bbb.example.com

見匹配邏輯說明

  • 如果未勾選精確匹配,結果是匹配。原因是Referer規則列表填寫了*.example.com,Referer頭部中的多級網域名稱匹配名單中的泛網域名稱條目。泛網域名稱包含多級網域名稱。

  • 如果勾選精確匹配,結果是不匹配。原因是Referer規則列表填寫了*.example.com,僅匹配次層網域,不匹配第三層網域名。

http://example.com

Referer頭部中的次層網域不匹配名單中的泛網域名稱條目。原因是泛網域名稱不包含次層網域本身。

http://www.example.net

不匹配任何規則

既未匹配白名單,也未匹配黑名單,按照預設策略處理,允許訪問。

常見問題

請求中的Referer欄位不是應該預設內建HTTP或HTTPS協議頭部嗎,為什麼還會出現沒有帶上HTTP或HTTPS協議頭部的情況?

一般情況下,使用者請求中的Referer應該是帶有HTTP或HTTPS協議頭部的。然而,在某些情況下,可能會出現沒有帶上HTTP或HTTPS協議頭部的Referer的情況。

一種常見的情況是當使用者從一個不安全的網站(即未使用HTTPS加密)跳轉到一個使用HTTPS協議的網站時,瀏覽器在發送請求時可能會將Referer欄位中的協議頭部去除,以保護使用者資料的安全性。這種情況下,Referer欄位只會包含網域名稱部分,不包含協議頭部。

另外,某些瀏覽器或Proxy 伺服器可能會在特定情況下自動去除Referer欄位的協議頭部,例如在隱私保護模式下或通過匿名代理訪問網站時。

因此,在實際應用中,需要注意處理請求中Referer欄位可能沒有帶上HTTP或HTTPS協議頭部的情況,以確保正確判斷和使用Referer資訊。

為什麼會出現空Referer,對於此類請求應該怎麼處理?

空Referer(也稱為Referer頭為空白)是指在HTTP請求中缺失了Referer要求標頭部的情況。請求中的Referer頭通常包含完整的URI,其中包括協議(如 httphttps)、主機名稱,可能還包括路徑和查詢字串等。空Referer可能出現的原因:

  • 直接存取:使用者直接通過瀏覽器地址欄輸入網址、或通過書籤訪問、或開啟一個新的空白標籤頁時,都沒有來源網頁,因此Referer頭為空白。

  • 使用者隱私:使用者或使用者使用的軟體(比如瀏覽器延伸或隱私模式)可能出於隱私保護考慮故意去除Referer頭。

  • 安全性通訊協定:從HTTPS頁面跳轉到HTTP頁面的時候,為了安全起見,避免敏感資訊泄露,瀏覽器通常不會發送Referer頭。

  • 用戶端策略:一些網站或應用程式可能出於安全考慮,通過設定<meta> 標籤或者HTTP頭(如Referrer-Policy)控制Referer的發送。

  • 跨域請求:某些跨域請求可能因瀏覽器的安全性原則而不攜帶Referer頭。

對於帶有空Referer的請求,怎樣處理取決於具體應用情境和安全要求。以下是一些處理建議:

  • 預設策略:如果您的服務不需要依賴Referer資訊來作出決策,那麼可以允許帶有空Referer的請求。

  • 允許訪問:對於特定的URL或源,您可以勾選允许通过浏览器地址栏直接访问资源URL選項,只允許來自這些來源的請求,即使Referer為空白,CDN節點都將允許使用者訪問當前的資源。