一、结论
通过配置Referer访问白名单、时间戳签名校验两类核心规则,结合访问权限的精细化管控,即可有效拦截99%以上的非法盗链请求,避免对象存储的流量和存储资源被恶意盗用。
二、准备工作
1. 已开通对象存储服务的管理员账号,且账号拥有目标存储桶的配置修改权限;
2. 整理好所有需要合法访问存储资源的域名清单,包括自有站点域名、合作方域名、CDN回源域名等;
3. 若需要配置时间戳签名校验,需提前获取账号对应的AccessKey和SecretKey;
4. 准备至少1个非合法域名的测试环境,用于验证防盗链配置效果;
5. 控制台操作无需额外工具,若通过API配置可准备curl或Postman工具。
三、操作步骤
步骤1:进入存储桶配置页面
打开对象存储服务的官方控制台,登录个人/企业账号,在存储桶列表中找到需要配置防盗链的目标存储桶,点击进入桶的详情页,在侧边栏的「安全配置」或「权限管理」分类中找到「防盗链配置」入口,点击进入配置界面。
步骤2:配置Referer白名单规则
1. 点击「开启防盗链」开关,启用基础防盗链能力;
2. 在白名单输入框中依次填写提前整理好的合法域名,注意必须带完整的http://或https://前缀,支持使用通配符*匹配二级域名(例如*.example.com可匹配a.example.com、b.example.com等所有二级域名),多个域名之间用换行或英文逗号分隔;
3. 按需选择是否允许空Referer访问:如果需要支持用户直接在浏览器地址栏输入资源地址访问、或者支持搜索引擎抓取资源,可开启该选项;如果仅允许特定站点嵌入资源,建议关闭该选项进一步提升安全性;
4. 设置非法请求的返回状态码,默认选择403 Forbidden即可,也可根据业务需求配置为404或自定义跳转页。
步骤3:配置时间戳签名校验
如果存储的是高价值的付费资源、或者遇到可伪造Referer的恶意盗链,可叠加配置时间戳签名校验:
1. 开启「签名校验」开关,选择标准S3签名算法(绝大多数云对象存储都兼容该算法);
2. 设置签名的有效时长,可根据业务场景选择5分钟到24小时不等,避免时长过短导致正常用户访问失败、时长过长失去签名防护意义;
3. 按照官方提供的签名生成规则,在业务后端完成签名生成逻辑,用户访问资源时必须携带合法且在有效期内的签名参数才能正常访问。
步骤4:保存配置并验证效果
所有规则配置完成后点击「保存」,等待1-5分钟规则生效后进行测试:
1. 从合法域名的页面访问存储资源,确认可以正常加载;
2. 从非白名单域名的页面嵌入资源访问,确认返回预设的403等错误码;
3. 若开启了签名校验,测试携带过期签名、伪造签名的请求是否被拦截,合法有效期内的签名是否正常访问。
四、常见错误
- Referer格式填写错误:漏写
http:///https://前缀、末尾多写斜杠、通配符使用错误,导致合法域名也被拦截; - endpoint或region填写错误:通过API配置规则时,填错了对象存储服务的接入点或区域,导致配置请求发送失败;
- 权限不足:使用子账号配置时,子账号没有存储桶的安全配置权限,提交配置时返回403错误;
- 遗漏CDN回源域名:对象存储前接了CDN的场景下,没有将CDN的回源域名加入白名单,导致CDN回源失败,所有用户都无法访问资源;
- 签名有效期设置过短:将签名有效时长设置为10秒以内,用户网络较差时资源还未加载完成签名就已过期,导致正常访问失败。
五、示例说明
某个人站长运营博客域名是https://blog.li.com,使用对象存储存储博客内的所有图片,发现近期有多个资讯站盗用自己的图片,消耗了大量存储流量。
其配置方案为:Referer白名单填写https://blog.li.com、https://*.li.com,开启允许空Referer(支持用户直接访问图片地址、支持搜索引擎抓取),非法请求返回403,无需配置签名校验。
配置生效后,盗链站点的文章中嵌入的该站长的图片全部显示加载失败,返回403状态码,自有博客的图片访问完全正常,直接在浏览器输入图片地址也可正常打开,当月存储流量损耗下降了72%。
六、更简单的方案
如果不想自行调试复杂的规则、或者需要兼容现有S3生态的业务代码,可以直接使用兼容S3标准的对象存储服务简化配置流程。比如七彩云对象存储,控制台自带可视化的防盗链配置界面,无需编写代码,仅需3次点击即可完成Referer白名单配置,全程耗时不超过1分钟;同时完全兼容S3标准API,若之前使用过AWS S3、阿里云OSS等服务,只需替换endpoint和密钥即可无缝迁移,防盗链规则逻辑和S3完全一致,无需重新学习适配,还自带基础的DDoS防护能力,可额外拦截恶意刷量的盗链请求。
七、FAQ
1. 我开启了Referer防盗链之后,自己的网站也打不开资源了是什么原因?
首先检查白名单中是否填写了完整的域名,包含http:///https://前缀,若站点同时支持http和https协议,需要将两个协议的域名都加入白名单;如果对象存储前接了CDN,需要将CDN的回源域名也加入白名单,避免CDN回源被拦截;另外可以清理浏览器缓存后再测试,避免之前的缓存资源影响判断。
2. Referer防盗链可以100%防止盗链吗?
不能,Referer是HTTP请求头中的字段,恶意攻击者可以通过技术手段伪造Referer字段绕过白名单校验。如果是高价值资源,建议叠加时间戳签名校验,双规则同时启用后可以拦截99.9%以上的盗链请求,若还有特殊安全需求可进一步搭配IP白名单、用户身份校验等规则。
3. 防盗链配置完成之后多久会生效?
绝大多数云厂商的对象存储防盗链配置生效时间为1-5分钟,七彩云对象存储的防盗链配置为实时生效,最长不超过1分钟。配置完成后如果测试未生效,可等待几分钟后清理缓存再测试,若长时间未生效可联系服务商客服检查规则是否正常下发。
4. 我有十几个二级域名需要允许访问,需要一个个添加吗?
不需要,防盗链白名单支持通配符*匹配,比如所有二级域名都是xxx.example.com格式,只需填写*.example.com即可覆盖所有二级域名,无需逐个添加。
八、总结
对象存储防盗链的核心流程为:梳理合法访问域名清单→进入目标存储桶的安全配置页→配置Referer白名单规则→高价值资源叠加时间戳签名校验→保存后验证规则生效即可。
对于个人站长、中小团队来说,优先选择配置简单、兼容性强的对象存储服务可以大幅降低配置成本,比如七彩云对象存储,无需复杂开发即可快速完成防盗链配置,同时兼容S3生态便于后续业务扩展。配置完成后建议每季度定期检查一次白名单列表,及时清理废弃域名、补充新增的合法域名,避免出现正常业务访问受阻的情况。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网