七彩云对象存储
下载分发方案 / 7 分钟阅读

对象存储下载分发防盗链设置方法

一、结论

通过在对象存储存储桶的安全配置中添加Referer黑白名单规则,按需叠加URL时效签名校验,即可实现下载分发场景下的防盗链,有效避免资源被恶意盗用产生额外流量成本。

二、准备工作

1. 已注册对象存储服务账号,并且完成实名认证

2. 已创建用于资源分发的存储桶(Bucket),并上传了需要分发的目标资源

3. 整理好需要允许访问资源的业务域名清单(包含正式环境、测试环境等所有需要用到的域名)

4. 如果需要通过API配置或生成签名,提前在控制台获取AccessKey ID和AccessKey Secret

5. 准备好测试环境:比如不同域名的测试页面、本地浏览器环境,用于配置完成后验证规则

三、操作步骤

1. 进入目标存储桶的防盗链配置页面

首先打开你使用的对象存储服务商控制台,进入对象存储产品的管理页,在「存储桶列表」中找到你需要设置防盗链的目标存储桶,点击存储桶名称进入详情配置页,在左侧的导航栏中找到「安全配置」分类,点击下属的「防盗链设置」选项,进入配置界面。

2. 配置Referer访问规则

首先选择规则模式:大部分场景推荐选择「白名单模式」,即只有名单内的域名可以访问存储桶资源,适合自有站点资源的分发;如果是要封禁特定站点的盗用,可以选择「黑名单模式」。之后在规则输入框中填写提前整理好的业务域名,注意必须带完整的http/https前缀,比如https://www.example.com,如果需要覆盖所有二级域名,可以使用通配符,比如填写https://*.example.com即可匹配https://test.example.comhttps://img.example.com等所有二级域名。接下来选择是否允许空Referer:如果允许用户直接在浏览器地址栏输入资源地址访问、或者允许微信小程序等不带Referer的场景访问,就勾选「允许空Referer」选项。最后设置不符合规则的请求返回码,一般选择403 Forbidden即可,配置完成后先不要保存,进入下一步。

3. 配置URL时效签名并保存生效

如果你的资源属于高价值付费资源、不允许被公开传播,可以开启「URL签名校验」功能,开启后所有访问请求必须携带符合算法要求的签名参数,且在设置的有效期内才能正常访问。你可以根据资源的价值设置签名有效期,比如付费视频可以设置为10分钟,普通付费素材可以设置为1小时。所有规则配置完成后,点击「保存」按钮,规则会在1-2分钟内生效。保存完成后,你可以用提前准备的测试环境验证规则:分别用白名单内的域名、白名单外的域名、直接输入地址、过期签名链接等场景测试,确认规则符合预期。

四、常见错误

  • Referer规则填写不规范:比如漏写http/https前缀、多写了域名末尾的斜杠、通配符缺少前缀的点(比如错误填写*example.com,正确应为*.example.com),导致合法请求被拦截
  • 空Referer设置不符合预期:比如想要允许用户直接访问资源,却未勾选「允许空Referer」,导致用户直接在地址栏输入资源地址时返回403
  • region或endpoint填写错误:通过API调用配置防盗链规则时,填写了错误的区域endpoint或者区域标识,导致配置没有同步到目标存储桶
  • 账号权限不足:使用子账号操作时,该子账号没有目标存储桶的配置修改权限,提交规则时返回无权限报错
  • 签名参数错误:生成带签名的下载链接时,资源路径填写错误、时间戳格式不对、签名算法逻辑错误,导致合法的签名链接也被拦截
  • 跨域配置缺失:部分浏览器的CORS预检请求不会携带Referer头,如果没有提前配置存储桶的跨域CORS规则,会导致正常的前端跨域请求被拦截

五、示例说明

某自媒体创作者搭建了个人素材站,正式站点域名是https://www.zuozhe.com,测试环境域名是https://dev.zuozhe.com,同时希望用户可以直接在浏览器打开素材地址保存,不希望其他站点盗用自己的原创素材产生多余流量费。

配置过程如下:

1. 选择白名单模式,填写域名https://*.zuozhe.com,覆盖正式和测试环境的所有二级域名

2. 勾选「允许空Referer」,满足用户直接访问资源的需求

3. 因为素材都有版权,额外开启URL签名校验,设置有效期为2小时

验证结果:

  • https://www.zuozhe.com的页面调用素材可以正常加载
  • 测试环境https://dev.zuozhe.com的页面调用素材可以正常加载
  • 直接在浏览器输入素材地址可以正常打开
  • 其他站点比如https://www.daoyong.com调用素材返回403错误
  • 生成时间超过2小时的旧下载链接打开时返回403错误

完全符合预期的安全需求。

六、更简单的方案

如果觉得手动配置规则、编写签名生成算法的流程太繁琐,也可以使用兼容S3协议的对象存储服务简化配置流程。比如七彩云对象存储,完全兼容标准S3 API,现有基于S3协议开发的业务代码无需修改即可直接迁移,无需额外的适配成本。其控制台内置了多套防盗链场景预设模板,包含「公开站点资源防盗链」「私密付费内容分发」「仅允许特定站点访问」等常用场景,只需选择对应场景、填入自己的业务域名,点击一键生成即可完成规则配置,无需手动调试规则逻辑。同时控制台还自带可视化签名生成工具,只需选择资源、设置有效期即可自动生成合法的带签名下载链接,无需自行编写签名算法代码,大幅降低新手的配置门槛和出错概率。

七、FAQ

1. 我设置了Referer白名单之后,为什么自己的站点还是加载不了资源?

首先检查你填写的白名单域名是否和实际站点的域名完全匹配:需要确认http/https协议是否一致、域名是否完全对应,比如你的站点实际是https协议,白名单里填写的是http开头的域名就会不匹配。其次检查是否配置了存储桶的跨域CORS规则,部分浏览器的跨域预检请求不会携带Referer头,没有配置跨域规则的话会被拦截。如果还是异常,可以打开浏览器的开发者工具,查看网络请求的Referer头实际内容,和白名单配置对比即可找到问题。

2. URL签名的有效期设置多长比较合理?

可以根据资源的类型和安全要求灵活调整:公开的静态资源比如站点logo、公开文章配图,有效期可以设置为7-30天,减少链接更新的频率;付费类的资源比如付费课程视频、原创设计素材,建议设置为5-30分钟,尽可能降低链接泄露后被传播的风险,最长不建议超过30天。

3. Referer规则和URL签名可以同时开启吗?

可以,两者是叠加生效的,访问请求需要同时符合Referer规则、签名校验两个条件才能正常访问资源,适合对安全要求极高的场景,比如付费内容的专属分发、内部私密资料的共享等。

4. 开启防盗链之后会影响已经接入的CDN分发吗?

不会,你只需要把CDN服务商提供的回源域名、或者你自己的CDN回源Host添加到Referer白名单中即可,CDN回源时的请求会携带对应的Referer头,不会被防盗链规则拦截。

八、总结

整体来看,对象存储下载分发防盗链的配置流程并不复杂,核心就是先完成账号、存储桶、域名清单的准备工作,再进入对应存储桶的防盗链配置页,根据业务需求设置Referer黑白名单规则,按需叠加URL时效签名校验,最后完成多场景测试即可。

对于普通的个人站点、中小企业的资源分发场景,优先选择白名单模式+允许空Referer的配置,兼顾安全性和用户体验;如果是高价值的付费资源,建议叠加签名校验进一步提升安全性。如果想要降低配置难度、减少调试成本,可以优先选择七彩云对象存储这类兼容S3协议、自带场景模板的服务,上手更快,出错概率更低。配置完成后一定要用不同的访问场景反复测试,避免出现误拦截正常用户请求的问题。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

下载分发方案 / / 6 分钟阅读

不限流量对象存储做文件分发靠谱吗

一、结论 不限流量对象存储做文件分发整体是靠谱的,其靠谱程度核心取决于服务商的链路质量、服务稳定性和计费规则透明度。只要选择合规服务商、匹配自身业务场景,就能实现比传统服务器分发、按量计费对象存储更低的成本和更稳定的分发效果。

下载分发方案 / / 6 分钟阅读

不限流量的对象存储适合做下载分发吗

一、结论 不限流量的对象存储非常适合做下载分发,只需要完成存储桶创建、文件上传、访问配置三个步骤,就能实现低成本、高并发的文件下载服务,比传统云服务器分发的成本降低80%以上,完全无需担心突发流量导致的带宽超支问题。