全部產品
Search
文件中心

Object Storage Service:使用Ruby SDK配置Referer防盜鏈來阻止其他網站引用OSS檔案

更新時間:Jun 19, 2024

您可以使用Ruby SDK在OSS中配置基於請求標題Referer的訪問規則,包括白名單Referer、黑名單Referer以及是否允許空Referer等,阻止某些Referer訪問您的OSS檔案,防止其他網站盜用您的檔案,並避免由此引起的不必要的流量費用增加。

注意事項

  • 在配置防盜鏈之前,請確保您已瞭解該功能。詳情請參見防盜鏈

  • 本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見訪問網域名稱和資料中心

  • 本文以OSS網域名稱建立OSSClient為例。如果您希望通過自訂網域名、STS等方式建立OSSClient,請參見初始化

  • 要設定或清空防盜鏈,您必須具有oss:PutBucketReferer許可權;要擷取防盜鏈,您必須具有oss:GetBucketReferer許可權。具體操作,請參見為RAM使用者授權自訂的權限原則

設定防盜鏈

以下代碼用於設定防盜鏈:

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# 設定儲存空間Referer列表。
bucket.referer = Aliyun::OSS::BucketReferer.new(
  allow_empty: true, whitelist: ['http://www.aliyun.com', 'https:www.aliyun.com'])

擷取防盜鏈配置

以下代碼用於擷取防盜鏈配置:

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
ref = bucket.referer
puts ref.to_s

清空防盜鏈

以下代碼用於清空防盜鏈:

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
bucket.referer = Aliyun::OSS::BucketReferer.new(allow_empty: true, whitelist: [])

相關文檔