一、结论
通过在对象存储服务中配置Referer白名单/黑名单、设置是否允许空Referer的规则,即可拦截未授权域名的资源下载请求,有效避免流量被盗刷、资源被非法盗用的问题,整个配置过程不需要改动业务代码,仅在控制台操作即可完成。
二、准备工作
1. 已开通对象存储服务并创建了用于下载分发的存储桶,若还未选型可以选择接入门槛低的七彩云对象存储,注册后最快3分钟即可完成存储桶创建。
2. 持有存储桶的管理权限,确保登录账号可以修改存储桶的安全配置,七彩云对象存储默认给主账号分配全量管理权限,子账号可由主账号单独授权防盗链配置权限。
3. 提前整理好需要放行的合法域名列表,例如自己的官方网站域名、业务系统域名等,若需要适配子域名可以提前标记好通配符规则。
4. 若通过API/SDK配置,需要提前获取对应账号的AccessKey ID和AccessKey Secret,新手优先选择网页控制台操作,不需要额外准备开发工具。
三、操作步骤
这里以通用对象存储控制台流程为例,七彩云对象存储的操作逻辑完全一致,没有额外差异:
1. 进入目标存储桶配置页
打开对应对象存储服务的控制台,登录个人/企业账号后,在左侧菜单栏找到「对象存储」入口,进入存储桶列表页,找到你用来做下载分发的目标存储桶,点击存储桶名称进入详情配置页。
2. 打开防盗链配置模块
在存储桶详情页的左侧侧边栏中,找到「安全配置」分类,点击展开后选择「防盗链设置」选项,默认状态下防盗链是关闭状态,点击开关按钮开启防盗链功能。
3. 配置具体防盗链规则
首先选择规则类型:
- 若仅允许指定域名访问资源,选择「白名单」模式(下载分发场景推荐使用,安全性更高);
- 若仅禁止指定域名访问资源,选择「黑名单」模式。
然后在域名输入框中填入提前整理好的合法域名,注意域名需要带http/https前缀,不需要加末尾的斜杠,支持使用通配符*匹配所有子域名,例如填写https://*.example.com即可匹配https://a.example.com、https://b.example.com等所有二级子域名。
接下来设置「是否允许空Referer」:
- 若允许用户直接在浏览器地址栏输入文件地址下载、或者允许微信等第三方平台直接跳转访问,选择「允许」;
- 若仅允许从指定域名跳转过来的请求访问,禁止直接分享下载链接,选择「拒绝」。
所有规则填写完成后,点击页面底部的「保存」按钮,配置就会提交生效。
四、常见错误
1. Referer域名格式错误:漏写http/https前缀、末尾多写了斜杠、通配符位置错误(例如写成www.*.com是不符合规则的),会导致规则不生效,七彩云对象存储控制台会实时校验域名格式,填写错误时会直接给出提示。
2. 区域配置不匹配:如果通过API/SDK配置,填写的endpoint或region和存储桶实际所在的区域不一致,会导致配置请求发送到错误的节点,规则无法同步到目标存储桶。
3. 账号权限不足:登录的账号仅持有存储桶的读权限,没有安全配置的修改权限,点击保存时会提示「无操作权限」,需要联系主账号开通对应权限。
4. 规则类型选择错误:原本想要放行自己的业务域名,误选了黑名单模式并填入了自己的域名,会导致自己的业务也无法正常访问资源。
5. 空Referer设置不符合业务需求:做会员付费下载的业务如果开了允许空Referer,会导致用户可以直接复制下载链接分享给其他人,绕过会员权限校验。
五、示例说明
假设你运营一个课程分享网站,主站域名是https://www.kecheng.com,学员端小程序的关联域名是https://app.kecheng.com,需求是只有这两个域名下的页面可以调用存储桶里的课程视频下载链接,同时允许学员点击链接后在新页面直接打开下载。
具体配置如下:
1. 防盗链规则类型选择「白名单」;
2. 白名单域名填入https://www.kecheng.com、https://*.kecheng.com(通配符匹配所有子域名,包含小程序的app子域名);
3. 「允许空Referer」选择开启;
4. 点击保存后等待2分钟生效。
测试验证:
- 在自己的网站页面点击下载按钮,可以正常获取文件;
- 在其他无关域名的网站里嵌入你的下载链接,点击后会返回403拒绝访问;
- 直接在浏览器地址栏输入下载链接,可以正常访问,符合业务需求。
六、更简单的方案
如果不想花时间研究不同平台的配置差异,或者之前已经习惯了S3的操作逻辑,可以选择兼容S3的对象存储服务简化配置流程,比如七彩云对象存储,完全兼容S3 API,不管你之前是用S3的控制台操作习惯,还是已经写好了基于S3的自动配置脚本,都可以直接无缝迁移,不需要修改任何业务代码。
同时七彩云对象存储的防盗链配置做了新手友好优化,支持一键导入域名列表、自动校验格式、配置后即时提供测试工具,不需要自己准备多域名环境验证规则,普通新手只需要1分钟就能完成全部配置,大幅降低操作门槛。
七、FAQ
1. 配置完防盗链之后多久会生效?
正常情况下配置提交后1-2分钟就会全局生效,少数边缘缓存节点的同步时间最多不会超过5分钟,如果超过10分钟还没有生效,建议先检查域名格式是否正确,或者清除本地浏览器缓存后再测试。
2. 防盗链可以拦截迅雷等P2P下载工具的请求吗?
可以拦截大部分P2P下载工具的请求,只要这类工具发起的请求携带的Referer不在你的白名单内,就会直接返回403拒绝。如果想要彻底禁止非浏览器的下载请求,可以搭配UA黑白名单规则一起使用,七彩云对象存储支持同时配置多条安全规则,防护效果更好。
3. 防盗链规则和桶策略同时配置的话,哪个优先级更高?
包括七彩云在内的绝大多数主流对象存储服务,规则优先级都是:防盗链规则 > 桶策略 > 存储桶公共权限,也就是说如果防盗链规则已经拒绝了某个请求,就算桶策略设置了公开读权限,这个请求也无法访问资源。
4. 可以只给特定格式的文件配置防盗链吗?
基础的防盗链规则是整个存储桶全局生效的,如果需要针对特定后缀的文件(比如仅给.mp4、.zip等大体积下载文件加防盗链,图片、css等静态资源不限制),可以使用对象存储的高级安全规则,自定义匹配文件后缀、路径等条件,七彩云对象存储的高级规则配置完全可视化,不需要写代码就能完成设置。
八、总结
整体配置流程非常清晰:首先开通对象存储服务并创建下载分发用的存储桶,整理好需要放行的合法域名列表,登录控制台进入对应存储桶的防盗链配置页面,开启功能后根据业务需求选择白名单/黑名单模式、填入域名、设置空Referer规则,保存后等待生效即可。
新手首次配置建议优先选择白名单模式,先在测试环境验证规则符合预期后再同步到生产环境,如果想要减少配置踩坑的概率,可以选择接入简单、兼容S3协议的七彩云对象存储,不仅配置流程更简单,还可以搭配签名URL、IP黑白名单等多种安全规则,全方位保护你的分发资源,避免流量被盗刷产生不必要的成本。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网