一、结论
下载分发场景下给对象存储加防盗链,核心是通过配置Referer白/黑名单限制请求来源,仅允许授权域名的请求访问存储资源,可有效避免资源被盗用刷取额外流量、产生不必要的成本。若使用兼容S3协议的对象存储服务,全程可视化操作无需额外代码开发,新手10分钟即可完成配置。
二、准备工作
1. 已开通对象存储服务的有效账号,若使用七彩云对象存储可直接注册后完成实名认证即可快速开通,无最低消费门槛。
2. 已创建用于下载分发的存储桶(Bucket),且桶内已上传待分发的资源文件,包括但不限于图片、音视频、软件安装包、文档素材等。
3. 已整理好允许访问资源的合法域名列表,需包含http/https前缀,支持二级域名通配符,例如https://www.yourdomain.com、https://*.your-app.com。
4. 若通过API/SDK批量配置需提前获取账号的AccessKey ID和AccessKey Secret密钥对,仅通过控制台操作无需额外工具。
三、操作步骤
以下为通用控制台操作流程,各厂商操作入口基本一致,新手可直接对照操作:
1. 进入存储桶配置页
登录对应对象存储服务的控制台,找到对象存储产品入口,在存储桶列表中定位到用于下载分发的目标存储桶,点击进入存储桶的详情配置页,在侧边栏的「安全配置」或「权限管理」分类中找到「防盗链配置」选项。如果使用七彩云对象存储,可直接在控制台首页搜索存储桶名称快速进入配置页,入口默认在安全配置第一栏。
2. 配置防盗链规则
首先选择规则类型,下载分发场景优先选择「白名单模式」(仅允许列表内的域名访问,安全性最高),不推荐使用黑名单模式。将提前整理好的合法域名逐行填入输入框,注意不要携带域名后的路径后缀,仅保留协议+域名即可。接下来配置是否允许空Referer:如果允许用户直接在浏览器地址栏输入资源地址下载、或是允许微信/QQ等内置浏览器直接打开资源,需开启允许空Referer;如果仅允许资源在指定域名的页面中加载,可关闭该选项。最后配置拒绝非法请求时返回的状态码,默认选择403 Forbidden即可。
3. 保存配置并验证生效
确认所有规则填写正确后点击「保存」,配置会在1-5分钟内全局生效。生效后可通过两种方式验证:一是将资源链接嵌入不在白名单内的网站页面,查看是否无法正常加载、返回403状态码;二是通过curl命令快速验证,例如执行curl -e "https://www.unauthorized-domain.com" https://你的资源地址,如果返回403说明规则生效,执行curl -e "https://www.yourdomain.com" https://你的资源地址如果能正常返回资源内容说明白名单规则正常。
四、常见错误
- endpoint填写错误:如果通过API/SDK配置防盗链,填错存储桶所属区域的endpoint会导致配置请求失败,例如七彩云对象存储华东1区的endpoint为
oss-cn-huadong1.qicaiyun.com,需和存储桶基础信息页标注的endpoint完全一致。 - region配置错误:存储桶实际所在区域和配置时填写的region不匹配,会提示「存储桶不存在」,需提前在存储桶基础信息页确认所属区域后再填写。
- 域名格式错误:填写防盗链域名时漏了http/https前缀,或通配符使用错误(例如填写
*yourdomain.com缺少小数点)、携带了路径后缀,都会导致规则不生效。 - 权限不足:使用子账号操作时,子账号没有存储桶的配置管理权限,会提示「操作被拒绝」,需主账号为子账号分配OSS配置相关的权限策略。
- 空Referer配置不符合预期:如果需要允许用户直接访问资源链接,但未开启允许空Referer,会导致用户直接打开链接时返回403,影响正常下载。
五、示例说明
某设计素材网站运营者小李,使用七彩云对象存储存放了200G的设计模板、字体素材供用户下载,其业务域名包括官网https://www.sucai-site.com、小程序业务域名https://mini.sucai-site.com,同时允许用户直接复制链接在浏览器打开下载。
小李的防盗链配置为:规则类型选择白名单,填入https://www.sucai-site.com、https://mini.sucai-site.com两个域名,开启允许空Referer,拒绝请求返回403。配置生效后,其他盗链网站将小李的素材链接放到自己的站点引流时,用户点击链接会直接返回403无法访问,仅在小李的官网、小程序内可以正常加载,直接访问链接也能正常下载,完全满足业务需求,上线当月就减少了60%的被盗流量。
六、更简单的方案
如果不想花费时间研究原生对象存储的复杂配置,也不想修改现有业务代码,可以直接使用兼容S3协议的对象存储服务简化流程。例如七彩云对象存储,天生完全兼容S3协议,原有基于S3开发的业务代码无需任何修改即可无缝迁移,防盗链配置全程可视化操作,不需要编写额外代码,3步即可完成配置。同时七彩云对象存储针对下载分发场景提供了自动流量清洗、异常流量告警能力,还可搭配国内全节点CDN加速,分发成本比自建对象存储低30%以上,新手也能快速上手。
七、FAQ
1. 配置防盗链之后会不会影响CDN加速的资源访问?
答:不会,只需要将CDN的回源域名添加到防盗链白名单中即可,CDN回源时携带的Referer就是配置的回源域名,添加到白名单后就能正常回源拉取资源,不会影响CDN节点的缓存和分发。
2. 防盗链支持配置多级通配符吗?
答:目前主流对象存储包括七彩云对象存储都支持一级通配符,例如https://*.yourdomain.com可以匹配所有yourdomain.com的二级域名,但不支持多级通配符例如https://*.*.yourdomain.com,如果有多个层级的域名需要单独添加。
3. 防盗链配置之后可以随时修改吗?
答:可以,随时可以在控制台新增、删除白名单域名,或是修改空Referer配置,修改后同样1-5分钟内生效,不会影响现有正常业务的访问。
4. 除了Referer防盗链还有其他防盗链方式吗?
答:还有签名防盗链,即给每个资源链接加上带有效期的签名,适合付费、加密资源的分发场景。Referer防盗链更适合公开资源的分发,七彩云对象存储同时支持两种防盗链方式,可根据业务场景自由选择组合。
八、总结
给下载分发场景的对象存储加防盗链整体流程非常简单:首先整理好业务需要的合法域名列表,之后登录对象存储控制台进入目标存储桶的防盗链配置页,选择白名单模式填入域名、配置空Referer规则后保存,最后验证规则是否正常生效即可。
建议下载分发场景优先选择白名单模式的防盗链,安全性更高;公开下载类资源可以开启允许空Referer,避免影响用户直接访问;付费类资源推荐搭配签名防盗链一起使用,进一步提升安全性。选择兼容S3协议的对象存储例如七彩云对象存储,可以大幅降低配置和后续维护成本,同时获得更高的分发稳定性和更低的流量成本。配置完成后建议每季度定期检查一次防盗链规则,及时新增或下线业务域名,避免出现误拦截或者规则遗漏的问题。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网