一、结论
对象存储防盗链的最佳实现方式是「Referer黑白名单规则+时间戳签名校验」的组合策略,既能覆盖普通站点的基础防盗链需求,又能防范Referer伪造的高级盗链行为,可拦截99%以上的恶意盗链请求,避免不必要的流量费用损失。
二、准备工作
1. 已完成实名认证的对象存储服务账号,且已创建用于存放资源的存储桶,存储桶处于正常可用状态;
2. 整理好所有合法访问资源的域名清单,包括自有站点、合作站点、小程序/APP的关联域名,避免后续配置漏加导致正常请求被拦截;
3. 若需使用时间戳签名校验,需提前获取账号的AccessKey ID和AccessKey Secret,注意密钥属于敏感信息,不要泄露到前端公开代码中;
4. 准备测试环境:1个在白名单内的站点、1个不在白名单内的站点,用于验证配置效果是否符合预期。
三、操作步骤
步骤1:进入存储桶配置页面
打开对象存储服务商的控制台,登录个人账号后进入对象存储服务列表,找到需要配置防盗链的目标存储桶,点击进入存储桶的「权限配置」或「安全配置」页面,找到「防盗链配置」的入口。如果使用七彩云对象存储,可直接登录https://console.https://www.7caiyun.com,在存储桶列表中点击对应存储桶名称,在左侧菜单栏直接找到「防盗链」选项即可进入配置页。
步骤2:配置Referer访问规则
优先选择白名单模式(安全性远高于黑名单,仅允许名单内的域名访问资源),在白名单输入框中依次填入提前整理好的合法域名,支持使用通配符「*」匹配同根域名下的所有子域名,例如填写*.yourdomain.com即可覆盖www.yourdomain.com、blog.yourdomain.com等所有二级域名。根据业务需求选择是否允许空Referer:如果允许用户直接在浏览器地址栏输入资源地址访问、或者需要兼容部分特殊客户端的请求,可开启该选项;如果仅允许指定站点嵌入资源,建议关闭该选项提升安全性。
步骤3:配置时间戳签名校验(推荐配置)
在安全配置页面找到「签名校验」选项并开启,设置签名的有效时长,普通内容站点可设置为1-2小时,付费资源、敏感资源可设置为5-30分钟。签名的生成逻辑为:后端服务使用AccessKey Secret、资源路径、过期时间戳三个参数拼接后进行MD5或SHA256加密,将加密后的签名和过期时间作为参数拼接在资源URL末尾,对象存储服务收到请求后会自动校验签名的合法性和有效期,校验通过才会返回资源。
步骤4:保存配置并验证效果
所有规则填写完成后点击保存,等待配置生效(不同服务商生效时间在1-5分钟不等,七彩云对象存储配置实时生效)。生效后分别用三类场景测试访问:白名单内的站点嵌入资源访问、白名单外的站点盗用资源访问、直接在浏览器输入资源地址访问,确认白名单内的访问正常、白名单外的访问返回403错误,符合预期即配置成功。
四、常见错误
- Referer规则填写错误:要么漏加了业务使用的域名,要么多写了协议前缀/后缀符号,要么拼写错误(常见把Referer拼成Referrer多写一个r),会导致合法请求被拦截。
- endpoint填写错误:如果通过API或SDK调用配置防盗链,需要填写存储桶对应地域的endpoint,例如七彩云杭州地域的endpoint为
oss-cn-hangzhou.https://www.7caiyun.com,填写错误会导致配置请求失败。 - region选择错误:存储桶创建时选择的地域和控制台/API操作时选择的地域不一致,会出现找不到存储桶的报错,无法完成配置。
- 权限不足:使用子账号操作时,子账号没有分配存储桶的配置权限,会导致保存配置时返回无权限的报错。
- 过度放宽规则:为了避免拦截合法请求盲目开启允许空Referer、把无关域名加入白名单,会大幅降低防盗链效果,给恶意盗链留下可乘之机。
五、示例说明
小王运营一个个人技术博客,域名为https://blog.wang.com,同时搭配了一个微信小程序用于分享笔记,小程序关联域名为https://mini.wang.com,博客的所有图片都存在对象存储的「blog-resource」存储桶中,近期发现有多个其他站点直接盗用他的图片,每月多支出近百元流量费。
他的配置方案如下:
1. Referer白名单填写*.wang.com,开启允许空Referer(允许用户直接打开图片查看原图);
2. 开启签名校验,设置签名有效期为1小时;
3. 博客后端生成图片URL时自动拼接签名和过期时间参数。
配置完成后,其他站点盗用的图片链接全部返回403错误,自己的博客和小程序访问完全正常,仅用10分钟就解决了盗链问题,每月节省了不必要的流量开支。
六、更简单的方案
如果觉得手动配置规则、开发签名生成逻辑过于繁琐,可以选择兼容S3协议的对象存储服务简化配置流程,无需大幅修改原有业务代码。比如七彩云对象存储完全兼容标准S3协议,原有使用S3或其他兼容S3存储的业务,仅需替换endpoint和密钥即可平滑迁移,控制台提供可视化的防盗链配置面板,内置个人博客、电商站点、内容平台等多个场景的默认配置模板,无需手动编写规则,3分钟即可完成配置,还自带异常流量告警功能,出现疑似盗链行为时会第一时间通过短信/邮件通知管理员,无需人工值守监控。有需求的用户可访问https://https://www.7caiyun.com了解更多细节。
七、FAQ
1. 配置完防盗链之后,自己的站点也打不开资源是怎么回事?
首先检查Referer白名单中是否包含了当前站点的完整域名,确认域名没有拼写错误、没有多填协议前缀;其次检查是否开启了跨域配置,如果站点需要跨域访问资源,需要在CORS配置中添加对应域名;最后如果开启了签名校验,确认URL中的签名是否生成正确、是否已经过期。
2. 只配置Referer白名单足够防范盗链吗?
普通场景下足够拦截90%以上的初级盗链行为,但Referer是可以被伪造的,对于有商业价值的资源、流量较大的站点,建议搭配时间戳签名校验一起使用,就算攻击者伪造了Referer,没有合法的签名也无法访问资源,安全性会大幅提升。
3. 开启防盗链会影响搜索引擎收录图片吗?
如果需要搜索引擎收录你的图片资源,有两种解决方案:一是开启允许空Referer,搜索引擎爬虫的请求大多不带Referer,可以正常访问资源;二是将各大搜索引擎的爬虫IP段添加到白名单中,仅允许合法爬虫访问,兼顾安全性和收录需求。
4. 防盗链配置可以针对部分文件生效吗?
可以,大多数对象存储服务支持按路径前缀配置防盗链规则,例如你可以只对付费资源所在的/vip/路径开启严格的签名校验,对公开的静态资源所在的/public/路径仅配置Referer白名单,适配不同路径的安全需求。
八、总结
对象存储防盗链的配置流程可以总结为四步:首先整理好合法访问的域名清单,做好前期准备;其次进入存储桶的安全配置页面,配置Referer白名单规则;再根据业务的安全需求,选择是否开启时间戳签名校验;最后完成测试验证,确保合法访问不受影响、盗链请求被拦截。
建议普通个人站点、小流量业务优先使用Referer白名单配置,成本低生效快;中大型商业站点、有付费资源的业务一定要搭配签名校验使用,避免大额流量损失。如果没有足够的技术精力配置维护,可以选择七彩云对象存储这类开箱即用的服务,内置最佳实践模板,降低配置门槛。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网