文档首页/ 对象存储服务 OBS/ 用户指南/ 数据安全/ 配置防盗链防止非法流量盗用
更新时间:2026-10-09 GMT+08:00
分享

配置防盗链防止非法流量盗用

OBS提供同时支持允许白名单访问和阻止黑名单访问的配置,防止盗链。

使用场景

一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担。因此,产生了防盗链技术。

在HTTP协议中,通过表头字段Referer,网站可以检测目标网页访问的来源网页。有了Referer跟踪来源,就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。防盗链就是通过设置Referer,去检测请求来源的Referer字段信息是否与白名单或黑名单匹配,如果与白名单匹配成功则允许请求访问,否则阻止请求访问或返回指定页面。

为了防止用户在OBS的数据被其他人盗链,OBS支持基于HTTP header中表头字段Referer的防盗链方法。OBS同时支持访问白名单和访问黑名单的设置。

工作原理

通过浏览器向OBS发送请求时,HTTP请求头中的Referer字段会记录发送请求的来源页面URL,OBS通过检验Referer字段的值来判断请求来源的合法性,通过配置防盗链的白名单Referer或黑名单Referer来允许或阻止访问来源。

配置防盗链后,OBS将按照以下规则进行访问控制:

  1. 检查请求的空Referer:OBS首先判断请求的Referer字段是否为空。
    • 如果请求的Referer字段为空,按照以下判断:
      • 如果防盗链配置的“允许空Referer”开关打开,则请求通过。
      • 如果防盗链配置的“允许空Referer”开关关闭且“白名单Referer”配置为空,则请求通过。
      • 如果防盗链配置的“允许空Referer”开关关闭且“白名单Referer”配置不为空,则请求拒绝。
    • 如果请求的Referer字段不为空,按照以下规则判断。
  2. 如果请求的Referer字段不为空,则根据请求的Referer字段中的值和防盗链配置的白名单Referer/黑名单Referer匹配情况判断:
    • 白名单Referer和黑名单Referer均为空:默认允许所有网站请求通过。
    • 白名单Referer不为空,黑名单Referer为空:如果请求的Referer字段中的值在白名单Referer中,则请求通过;反之,请求拒绝。
    • 白名单Referer为空,黑名单Referer不空:如果请求的Referer字段中的值在黑名单Referer中,则请求拒绝;反之,请求通过。
    • 白名单Referer不为空,黑名单Referer不为空:如果请求的Referer字段中的值在黑名单Referer中,则请求拒绝;如果请求的Referer字段中的值在白名单Referer中且不在黑名单Referer中,则请求通过。

约束与限制

  • 防盗链的生效范围:防盗链规则在桶级别配置,仅在桶级别生效,无法针对桶中指定对象生效。

注意事项

判断用户是否有对桶及其内容访问的四种权限(读取权限、写入权限、ACL读取权限、ACL写入权限)之前,需要首先检查是否符合referer字段的防盗链规则。

由于HTTP Referer可以被轻易伪造,因此防盗链为辅助安全手段而非可靠的安全防护。如果您对数据安全性要求较高,建议您使用OBS的其他数据安全相关功能,如服务端加密、WORM等。详情请参见OBS数据安全相关功能。

使用方式

OBS支持通过管理控制台、API方式配置防盗链,不支持通过SDK、OBS Browser+、obsutil方式配置防盗链。

场景示例

以下为防盗链常用的几种场景。

仅允许可信网站访问OBS

通过防盗链的白名单Referer机制,仅允许经常访问OBS桶的受信任的Referer访问OBS。

  1. 查看OBS桶的日志记录,在桶日志文件中找到“Referer”字段对应的值。关于桶日志记录,请参见日志存储简介。

    如果桶日志文件中“Referer”字段对应的值为“-”,表示为空Referer。

  2. 为桶配置防盗链规则。

    配置步骤请参见使用OBS控制台,配置参数如表2所示。

    表2 白名单防盗链规则

    配置参数

    参数值

    说明

    白名单Referer

    https://www.example.com
    http://www.example.com
    https://console.huaweicloud.com/*
    • 添加经常访问OBS桶的受信任的网站域名。
    • 建议同时添加HTTPS和HTTP协议的域名。
    • 添加控制台域名并使用通配符“*”,确保在不同区域的控制台上都能正常预览。

    允许空Referer

    允许

    确保直接访问和控制台预览功能都能正常工作。

    黑名单Referer

    无需配置

    无需禁止特定来源。

  3. 验证配置。

    • 模拟白名单内的Referer访问OBS,预期成功。
      curl -e "https://www.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟白名单外的Referer访问OBS,预期失败,返回AccessDenied。
      curl -e "https://www.example01.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟空Referer访问OBS,预期成功。
      curl https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt

禁止恶意网站非法盗用OBS数据

允许所有来源访问,但要明确禁止某些恶意网站非法盗用OBS的数据。通过黑名单Referer精准拦截恶意访问来源。

  1. 查看OBS桶的异常流量的日志记录,在桶日志文件中找到“Referer”字段对应的值。关于桶日志记录,请参见日志存储简介。
  2. 为桶配置防盗链规则。

    配置步骤请参见使用OBS控制台,配置参数如表3所示。

    表3 黑名单防盗链规则

    配置参数

    参数值

    说明

    白名单Referer

    *

    允许所有来源访问OBS。

    允许空Referer

    允许

    确保直接访问OBS和正常客户端都能正常访问。

    黑名单Referer

    https://badmail.example.com
    http://badmail.example.com
    *badsite.example

    禁止恶意网站域名访问OBS,通配符“*”表示禁止整个域名及其子域名。

  3. 验证配置。

    • 模拟可信网站访问OBS,预期成功。
      curl -e "https://www.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟黑名单中的Referer访问OBS,预期失败,返回AccessDenied。
      curl -e "https://badmail.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟空Referer访问OBS,预期成功。
      curl https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt

支持小程序访问OBS

通过防盗链的白名单机制,仅允许某个小程序(如https://appexample.com/{appid}/{version}/page-example.html)访问OBS。通过白名单Referer允许该小程序访问OBS。

  1. 获取小程序的域名,使用通配符“*”兼容小程序所有子域名。

    如果需要获取小程序访问的具体Referer,可以查看小程序访问OBS桶的日志记录,在桶日志文件中找到“Referer”字段对应的值。关于桶日志记录,请参见日志存储简介。

  2. 为桶配置防盗链规则。

    配置步骤请参见使用OBS控制台,配置参数如表4所示。

    表4 白名单防盗链规则

    配置参数

    参数值

    说明

    白名单Referer

    *appexample.com
    https://console.huaweicloud.com/*
    • 使用通配符“*”兼容小程序所有子域名。
    • 添加控制台域名并使用通配符“*”,确保在不同区域的控制台上都能正常预览。

    允许空Referer

    允许

    某些情况下,小程序可能不发送Referer,允许空Referer保证兼容性。

    黑名单Referer

    留空

    无需禁止特定来源。

  3. 验证配置。

    • 使用小程序访问OBS,预期成功。
      curl -e "https://appexample.com/kbaS3wM/page.html" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟白名单外的Referer访问OBS,预期失败,返回AccessDenied。
      curl -e "https://www.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 使用小程序访问OBS(不带Referer),预期成功。
      curl https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt

允许在OBS控制台预览和下载对象

通过防盗链的白名单机制,在白名单Referer中添加OBS控制台域名以确保管理功能正常。

  1. 为桶配置防盗链规则。

    配置步骤请参见使用OBS控制台,配置参数如表5所示。

    表5 白名单防盗链规则

    配置参数

    参数值

    说明

    白名单Referer

    https://console.huaweicloud.com/*

    添加控制台域名并使用通配符“*”兼容其所有子域名,确保在不同区域的控制台上都能正常预览。

    允许空Referer

    允许

    确保直接访问和控制台预览功能都能正常工作。

    黑名单Referer

    留空

    无需禁止特定来源。

  2. 验证配置。

    模拟控制台访问,预期成功。也可以直接在OBS控制台预览和下载文件进行验证。

    curl -e "https://console.huaweicloud.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt

禁止通过URL直接访问OBS

强制要求所有访问OBS的来源都必须来自指定网站,禁止直接通过URL访问资源。

此配置将禁止空Referer,表示阻止所有直接访问方式。由于书签、邮件链接以及某些浏览器插件、下载工具或视频播放器的请求通常不带Referer,导致这些组件可能无法正常工作。

  1. 确定指定网站的Referer。

    尽可能地找到该网站所有可能的域名和协议组合,确保覆盖所有合法访问场景。

  2. 为桶配置防盗链规则。

    配置步骤请参见使用OBS控制台,配置参数如表6所示。

    表6 白名单防盗链规则

    配置参数

    参数值

    说明

    白名单Referer

    https://www.example.com
    http://www.example.com
    https://console.huaweicloud.com/*
    • 尽可能地找到该网站所有可能的域名和协议组合,确保覆盖所有合法访问场景。
    • 建议同时添加HTTPS和HTTP协议的域名。
    • 添加控制台域名并使用通配符“*”,确保在不同区域的控制台上都能正常预览对象。

    允许空Referer

    不允许

    禁止空Referer,可以阻止通过地址栏的链接直接访问OBS中的资源。

    黑名单Referer

    留空

    无需禁止特定来源。

  3. 验证配置。

    • 模拟指定网站页面访问OBS,预期成功。
      curl -e "https://www.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟通过地址栏链接直接访问OBS,预期失败,返回AccessDenied。
      curl https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt
    • 模拟其他网站访问OBS,预期失败,返回AccessDenied。
      curl -e "https://other.example.com" https://test-bucket.obs.cn-north-4.myhuaweicloud.com/test.txt

最佳实践

  • 存在绕过防盗链配置而命中CDN缓存的风险:如果OBS桶同时配置了防盗链和CDN加速域名,则当盗链请求访问OBS时,可能会由于CDN中缓存了请求的内容而导致请求直接命中CDN缓存节点并获得内容,从而绕过了OBS的防盗链配置。为确保防护体系完整有效,必须在CDN侧也配置防盗链规则。详情请参见配置防盗链规则拦截/放行指定Referer。
  • 会受浏览器Referrer-Policy策略的影响:现代浏览器支持Referrer-Policy响应头,网站可通过该标头控制跨域请求中发送Referer的发送策略。当使用某些策略(如:no-referrer)时,浏览器将不发送Referer信息,OBS会将其视为空Referer处理,在配置防盗链时需要考虑此种情况(配置白名单Referer时,打开“允许空Referer”开关)。
  • 需要考虑视频播放的兼容性:浏览器原生<video>标签播放视频时,会向视频服务器发起请求获取媒体数据。由于这些请求的Referer可能为空或指向其他页面,OBS必须允许空Referer访问(配置白名单Referer时,打开“允许空Referer”开关),否则视频将无法正常播放。

相关文档

相关文档