全部產品
Search
文件中心

Object Storage Service:防盜鏈

更新時間:Jan 29, 2026

當OSS資源被其他網站非法引用導致流量費用激增時,可以通過配置Referer黑白名單來限制資源的訪問來源,防止資源被盜用。

工作原理

當瀏覽器向OSS請求檔案時,HTTP請求的Referer標題會標識發起請求的源頁面URL。OSS通過校正Referer值來判斷請求來源的合法性,基於預設規則允許或拒絕訪問。

配置防盜鏈後,OSS按照以下優先順序順序執行存取控制判斷:

  1. 空Referer檢查:OSS首先判斷請求的Referer欄位是否為空白。如果為空白,按以下邏輯判斷:

    • 允許空Referer:請求通過。

    • 不允許空Referer且白名單為空白:請求通過。

    • 不允許空Referer且白名單不為空白:請求拒絕。

    如果Referer不為空白,繼續下一步檢查。

  2. 黑名單檢查:OSS檢查請求的Referer是否匹配黑名單。匹配到任意一項則立即拒絕,不再檢查白名單;未匹配則繼續下一步檢查。

  3. 白名單檢查:OSS檢查請求的Referer是否匹配白名單。匹配成功則請求通過,未匹配到任何一項則請求拒絕。

配置方式

  1. 前往Bucket列表,單擊目標Bucket。

  2. 在左側導覽列選擇數據安全 > 防盜鏈,啟用防盜鏈選項,按照需求配置Referer規則:

    • 白名單 Referer:允許訪問的網域名稱列表,每行一個。

    • 黑名單 Referer:禁止訪問的網域名稱列表,每行一個。黑名單優先順序高於白名單。

    • 空 Referer:是否允許不帶Referer的請求(如直接在瀏覽器地址欄訪問)。

    • 截斷 QueryString:是否在匹配時忽略URL中?之後的查詢字串,詳見QueryString解析規則

    Referer規則支援萬用字元:

    萬用字元

    說明

    樣本

    *

    代替0個或多個字元

    *.example.com可匹配http://www.example.comhttps://help.example.com

    ?

    代替1個字元

    http://www.aliyun?.com可匹配http://www.aliyunc.com

    Referer規則也支援帶連接埠的網域名稱或IP地址,如http://www.example.com:808010.10.10.10:8080

    說明

    匹配時不忽略協議(Scheme),配置http://www.aliyun.com不能匹配https://www.aliyun.com。建議同時添加HTTP和HTTPS版本。

  3. 單擊保存,完成設定。

情境樣本

僅允許受信任的網站訪問

通過白名單機制僅允許指定網站訪問OSS資源,同時支援使用者直接通過瀏覽器訪問。

步驟一:擷取Referer

配置前需擷取訪問OSS資源的請求來源Referer:

  • 通過OSS即時日誌:前往Bucket列表,在目標Bucket的日誌管理 > 即時查詢中尋找referer欄位,顯示為-表示空Referer。

  • 通過瀏覽器開發人員工具:按F12開啟開發人員工具,在網路面板中查看請求的Referer標題。

步驟二:配置Referer規則

配置項

配置值

說明

白名單 Referer

https://www.aliyun.com
http://www.aliyun.com
*.console.aliyun.com

添加信任的網站網域名稱,建議同時添加HTTP和HTTPS版本。添加控制台網域名稱確保管理功能正常。

黑名單 Referer

留空

無需禁止特定來源。

空 Referer

允許

確保使用者可直接在瀏覽器地址欄訪問,或從不發送Referer的用戶端正常訪問。

截斷 QueryString

允許

忽略URL查詢字串,提高匹配靈活性。

步驟三:驗證配置

# 類比白名單內的Referer訪問(預期成功)
curl -e "http://www.aliyun.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比白名單外的Referer訪問(預期返回AccessDenied)
curl -e "http://www.example.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比空Referer訪問(預期成功)
curl http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

禁止特定惡意網站盜用

允許大部分來源訪問,但明確禁止某些惡意網站盜用資源。通過黑名單機制精準攔截惡意來源。

步驟一:擷取惡意網站Referer

前往Bucket列表,在目標Bucket的日誌管理 > 即時查詢中篩選異常流量記錄,查看referer欄位識別惡意網站網域名稱。

步驟二:配置Referer規則

配置項

配置值

說明

白名單 Referer

*

萬用字元表示允許所有來源訪問。

黑名單 Referer

*bad-site.example
http://malicious-site.example
https://malicious-site.example

禁止的惡意網站網域名稱,使用萬用字元可禁止整個網域名稱及其子網域名稱。

空 Referer

允許

確保直接存取和正常用戶端能正常訪問。

截斷 QueryString

允許

忽略URL查詢字串,提高匹配靈活性。

步驟三:驗證配置

# 類比正常網站的請求(預期成功)
curl -e "http://www.example.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比黑名單內網站的請求(預期返回AccessDenied)
curl -e "http://bad-site.example" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比空Referer訪問(預期成功)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

支援微信小程式訪問

微信小程式發起的請求Referer固定為https://servicewechat.com/{appid}/{version}/page-frame.html格式,需針對此格式進行配置。

步驟一:擷取微信小程式Referer格式

微信小程式的Referer格式固定且規律,無需特別擷取,可直接使用萬用字元配置。如需確認具體格式,可前往Bucket列表,在目標Bucket的日誌管理 > 即時查詢中查看referer欄位。

步驟二:配置Referer規則

配置項

配置值

說明

白名單 Referer

*servicewechat.com
*.console.aliyun.com

使用萬用字元相容所有微信小程式的appid和版本號碼。添加控制台網域名稱確保管理功能正常。

黑名單 Referer

留空

無需禁止特定來源。

空 Referer

允許

某些情況下小程式可能不發送Referer,允許空Referer確保相容性。

截斷 QueryString

允許

忽略URL查詢字串,提高匹配靈活性。

步驟三:驗證配置

# 類比微信小程式的請求(預期成功)
curl -e "https://servicewechat.com/wx1234567890abcdef/1/page-frame.html" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比其他來源的請求(預期返回AccessDenied)
curl -e "http://www.example.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比空Referer訪問(預期成功)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

允許OSS控制台預覽和下載

設定防盜鏈後,需在白名單中添加OSS控制台網域名稱以確保管理功能正常。

步驟一:配置規則

配置項

配置值

說明

白名單 Referer

*.console.aliyun.com

使用萬用字元相容所有OSS控制台的子網域名稱,確保在不同地區的控制台中都能正常預覽。

黑名單 Referer

留空

無需禁止特定來源。

空 Referer

允許

確保直接存取和控制台預覽功能都能正常工作。

截斷 QueryString

允許

忽略URL查詢字串,提高匹配靈活性。

步驟二:驗證配置

# 類比控制台訪問(預期成功)
curl -e "https://oss.console.alibabacloud.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

也可直接在OSS控制台嘗試預覽和下載檔案進行驗證。

禁止通過URL直接存取

強制所有訪問都必須來自指定網站頁面,通過禁止空Referer阻止使用者直接通過URL訪問資源。

重要

此配置會阻止所有直接存取方式,包括從書籤、郵件連結等途徑的訪問。某些瀏覽器外掛程式、下載工具或視頻播放器可能無法正常工作,因為這些請求通常不包含Referer。

步驟一:確定網站的Referer

確定業務網站的所有可能網域名稱和協議組合,確保配置覆蓋所有合法訪問情境。

步驟二:配置規則

配置項

配置值

說明

白名單 Referer

https://www.example.com
http://www.example.com
*.console.aliyun.com

業務網站網域名稱,根據實際情況添加所有需要支援的網域名稱和協議組合。添加控制台網域名稱確保管理功能正常。

黑名單 Referer

留空

無需禁止特定來源。

空 Referer

不允許

關鍵配置,不允許空Referer可有效阻止通過地址欄直接存取資源。

截斷 QueryString

允許

忽略URL查詢字串,提高匹配靈活性。

步驟三:驗證配置

# 類比網站頁面的請求(預期成功)
curl -e "http://www.example.com" http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比直接存取(預期返回AccessDenied)
curl http://bucket.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 類比其他網站的請求(預期返回AccessDenied)
curl -e "http://other.example" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

QueryString解析規則

如果設定不允許截斷QueryString,OSS將按照以下規則解析:

規則

說明

不解碼QueryString

請求URL為http://www.example.com/?job_id=task$01時,白名單或黑名單設定為http://www.example.com/?job_id=task%2401無法匹配。

忽略參數大小寫

請求URL為http://www.example.com/?ACTION=NOP時,白名單或黑名單設定為http://www.example.com/?action=nop可以匹配。

不解析參數順序

請求URL為http://example.com/?b=c&a=b時,白名單或黑名單設定為http://example.com/?a=b&b=c無法匹配。

應用於生產環境

  • CDN緩衝繞過風險:當OSS資源配置了CDN加速時,盜鏈請求可能直接命中CDN邊緣節點緩衝並獲得服務,從而繞過OSS的防盜鏈驗證。為確保防護體系完整有效,必須在CDN層面配置相同的Referer防盜鏈規則,實現多層防護。

  • 瀏覽器Referrer-Policy策略影響:現代瀏覽器支援Referrer-Policy標題,允許網站控制跨域請求中發送Referer的詳細程度。某些策略(如no-referrer)會導致瀏覽器不發送Referer資訊,這類請求將被OSS視為空白Referer處理,需要在配置時予以考慮。

  • 視頻播放相容性:使用瀏覽器原生video標籤播放線上視頻檔案時,瀏覽器通常發起兩種請求:帶Referer的初始頁面載入請求和用於擷取媒體資料的空Referer請求。為確保視頻播放功能正常,必須允許空Referer訪問

配額與限制

  • 觸發條件:僅當通過匿名訪問簽名URL方式訪問Object時,OSS才執行防盜鏈驗證。使用AccessKey等簽名方式的API調用(即請求包含Authorization標題)不受防盜鏈規則限制。

  • 名單大小限制:Referer白名單和黑名單的總資料大小不能超過20 KB。

  • 生效範圍:防盜鏈規則在Bucket層級生效,無法為Bucket內的特定檔案或目錄單獨配置不同規則。

常見問題

配置防盜鏈後為何未生效?

請按以下順序排查:

  1. 瀏覽器環境檢查:某些特定瀏覽器環境(如微信小程式、iframe等)可能修改或設定特定的Referer值。通過OSS即時日誌或瀏覽器開發人員工具查詢請求的實際Referer值,然後重新設定防盜鏈規則。

  2. Referer格式規範:確認填寫的Referer是否規範。來自瀏覽器的請求通常帶有http://https://協議首碼,如果配置時遺漏協議部分,則無法正確匹配請求。

  3. CDN緩衝繞過:如果使用CDN加速OSS且未在CDN配置防盜鏈,可能導致通過CDN訪問時繞過驗證。請在CDN上配置與OSS一致的防盜鏈規則。

微信小程式中訪問OSS資源提示拒絕訪問如何解決?

微信小程式發起的請求具有固定的Referer格式,通常為https://servicewechat.com/開頭。在防盜鏈白名單中添加*servicewechat.com規則即可相容所有小程式的訪問需求。

瀏覽器地址欄直接存取檔案提示拒絕訪問如何解決?

直接在瀏覽器地址欄訪問屬於空Referer請求。如果防盜鏈配置為不允許空Referer,此類訪問會被拒絕。若需支援直接存取,請將防盜鏈配置中的空 Referer選項修改為允許

儲存配置時出現InlineDataTooLarge錯誤如何處理?

此錯誤表示配置的Referer名單(白名單和黑名單合計)總大小超過了20 KB限制。建議使用萬用字元合并多條相似規則,或刪除不必要的規則條目以減小配置大小。