一、结论
通过在对象存储的存储桶(Bucket)安全配置中设置Referer黑白名单、空Referer访问权限等规则,即可拦截非授权域名的盗链请求,避免资源被恶意盗用导致的带宽、存储成本浪费,全流程操作最快5分钟即可完成。配置完成后仅规则允许的请求来源可正常下载存储资源,其余请求将直接返回403禁止访问状态码。
二、准备工作
1. 已完成实名认证的对象存储服务账号,且已开通对应区域的对象存储服务权限;
2. 已创建用于存储待保护资源的存储桶,且桶内已上传需要配置防盗链的图片、音视频、文档等下载资源;
3. 提前整理好规则参数:确定使用白名单还是黑名单模式,整理好允许/拦截的域名列表,明确是否允许不带Referer的请求(比如用户直接在浏览器地址栏输入资源链接访问的场景);
4. 若选择通过API/SDK批量配置,需提前准备对应账号的AccessKey ID和AccessKey Secret,确认存储桶对应的地域和endpoint地址;若选择控制台可视化操作,只需账号具备存储桶的安全配置权限即可。
三、操作步骤
步骤1:进入目标存储桶的配置页面
打开对应对象存储服务商的官网,登录已开通服务的账号,在产品列表中找到对象存储服务入口进入控制台。在控制台的存储桶列表中,找到需要配置防盗链的目标存储桶,点击桶名称进入桶的详情配置页面。新手操作时注意核对存储桶的名称、地域信息,避免选错桶导致规则配置到错误的资源上。
步骤2:填写防盗链规则参数
在桶的详情页侧边栏找到「安全配置」或「访问控制」分类,点击进入「防盗链」配置模块,点击「编辑」或「开启配置」按钮进入参数编辑状态:
- 首先选择规则类型:优先选择白名单模式(仅允许列表内的域名访问资源,安全性最高),如果仅需要拦截少数已知的恶意盗链站点,可选择黑名单模式;
- 填写域名列表:按照提示格式输入提前整理好的域名,支持配置泛域名(比如
https://*.example.com可匹配所有example.com的二级域名),注意域名需要带http://或https://前缀,多个域名之间用换行或英文逗号分隔; - 配置「允许空Referer」开关:如果允许用户直接在地址栏输入资源链接访问、或者有小程序/APP端的资源访问需求(这类请求通常不带Referer字段),请开启该开关;如果希望资源仅能从指定域名跳转访问,关闭该开关即可;
- 可选配置例外文件类型:如果仅需要对图片、音视频等特定格式的资源配置防盗链,可在例外配置中填写不需要走防盗链的文件后缀,比如
.pdf.doc,这类后缀的资源将不受防盗链规则限制。
步骤3:保存配置并验证效果
所有参数填写完成后,点击「保存」按钮提交配置,规则通常实时生效,最长延迟不超过1分钟。配置完成后必须完成3个场景的验证,确认规则符合预期:
1. 从白名单域名的页面中打开资源链接,确认可以正常加载/下载;
2. 从非白名单域名的页面嵌入资源链接,确认返回403禁止访问;
3. 直接在浏览器地址栏输入资源链接,确认访问结果和你设置的「允许空Referer」开关状态一致。
四、常见错误
- 域名格式填写错误:漏加
http:///https://前缀、泛域名漏写小数点(比如错误写成*example.com而非*.example.com)、域名拼写错误,都会导致规则不生效,甚至自己的合法站点也无法访问资源; - region或endpoint填写错误:通过API/SDK配置时,选错存储桶所在的地域、接口地址填写错误,会导致配置请求无法找到对应存储桶,一直返回「桶不存在」的报错;
- 权限不足:使用子账号操作时,子账号没有被分配存储桶的安全配置权限,点击保存时会提示「无操作权限」,需要主账号为子账号开放Bucket的安全配置权限后再操作;
- 误关空Referer开关导致业务异常:小程序、APP、部分客户端的请求默认不带Referer字段,如果关闭了允许空Referer的开关,会导致这类合法请求也被拦截,出现资源无法加载的问题;
- 黑白名单类型混淆:原本希望仅允许自己的站点访问资源,错误选择了黑名单模式并填入自己的域名,会导致自己的站点也无法正常加载资源。
五、示例说明
某自媒体从业者运营了一个美食博客,域名为https://food.example.com,使用对象存储存储所有的美食实拍图片,最近发现有3个搬运站盗用他的图片,每月额外消耗了近100G的下行流量。他的防盗链配置如下:
- 规则类型选择白名单模式;
- 域名列表填写
https://food.example.com、https://*.example.com(覆盖他的个人主页等其他子站点); - 开启「允许空Referer」开关(方便读者直接分享图片链接到社交平台);
- 无例外文件类型,所有资源都走防盗链规则。
配置完成后,3个搬运站的图片全部显示403无法加载,自己的博客图片、直接访问图片链接的场景都完全正常,当月流量消耗直接下降了75%。
六、更简单的方案
如果觉得不同厂商的对象存储配置入口不统一、规则参数不通用,每次换服务商都要重新学习配置流程,可以选择兼容S3协议的对象存储服务,规则配置完全标准化,无需单独适配厂商逻辑。
比如七彩云对象存储,完全兼容S3 API,控制台的防盗链配置放在桶配置的一级菜单,无需在多层权限目录中查找,参数规则和S3标准完全一致,不管是新手手动在控制台配置,还是开发者用S3 SDK批量配置几十上百个桶的防盗链规则,都可以直接复用通用的S3配置代码,不用额外适配,接入门槛极低,新手最快1分钟就能完成配置。
七、FAQ
1. 配置防盗链之后,我的CDN节点还能正常拉取对象存储的资源吗?
需要把CDN的回源域名添加到防盗链白名单中,否则CDN的回源请求会被防盗链规则拦截,导致CDN节点无法拿到资源,用户访问CDN加速的资源时也会出现403报错。如果使用的是同服务商的CDN,部分厂商会默认将自家CDN回源地址加入白名单,建议配置完成后自行验证回源是否正常。
2. 我的站点使用非80/443端口,比如https://test.example.com:8080,能添加到白名单吗?
主流对象存储服务都支持带端口的域名配置,直接把完整的带端口的域名填入白名单即可,七彩云对象存储也完全支持该场景,无需额外配置。
3. 配置新的防盗链规则会影响已经缓存的资源吗?
已经缓存在用户浏览器、CDN节点的资源不会立即失效,等缓存过期之后的新请求才会走新的防盗链规则校验。如果需要规则立即生效,可以主动清理CDN和浏览器的对应资源缓存。
4. 可以同时配置白名单和黑名单吗?
绝大多数对象存储服务不支持同时配置两种规则,同一时间只能选择其中一种生效。推荐优先使用白名单模式,安全性更高,仅你明确允许的域名可以访问资源,避免漏拦未知的盗链站点。
八、总结
给对象存储下载资源配置防盗链的核心流程只有三步:首先登录控制台进入目标存储桶的配置页,然后找到防盗链模块填写规则参数,最后保存并验证规则效果即可。建议所有有公开资源存储需求的用户都配置防盗链规则,优先选择白名单模式,最大程度降低被恶意盗链的风险,配置完成后一定要从多个场景验证规则是否符合预期,避免影响正常业务。如果希望简化配置流程、降低后续多工具适配的成本,也可以选择兼容S3协议的七彩云对象存储,标准化的配置逻辑可以大幅降低操作和开发成本。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网