一、结论
对象存储防盗链配置通常是通过存储桶的Referer规则配置实现,限制未授权域名访问公开资源,避免流量被盗刷。如果使用的是支持S3协议的对象存储,配置前需准备好存储桶操作权限、S3接入相关信息,配置完成后验证规则即可在数分钟内生效。
二、准备工作
操作前需要提前准备以下内容,避免配置过程中频繁切换页面查找信息:
- 对象存储服务的管理员账号,需具备目标存储桶的配置权限
- 已经创建完成的目标存储桶Bucket
- 存储桶对应的Endpoint地址、AccessKey、SecretKey、Region信息(若通过API配置需要用到)
- 业务侧确认的合法域名列表,包括主域名、子域名,提前确认是否需要允许空Referer访问
- 非法访问时的自定义返回配置,可选403状态码或自定义跳转地址(非必填)
- 测试用的访问工具,包括浏览器、curl命令工具或不同域名的测试环境
- 存储桶内至少1个公开读权限的测试文件,用于验证规则生效情况
三、操作步骤
以下是通用的对象存储防盗链配置步骤,支持S3协议的对象存储服务普遍适用:
1. 登录对象存储服务控制台,找到目标存储桶,进入存储桶的权限配置/防盗链配置模块,结果:成功进入防盗链规则配置页面。
2. 选择防盗链规则类型,可选白名单模式(仅允许指定域名访问)或黑名单模式(仅禁止指定域名访问,其余域名均可访问),结果:规则类型匹配业务防盗需求,比如资源站、下载站等场景推荐选择白名单模式。
3. 填写对应规则对应的域名列表,支持通配符配置(比如*.www.7caiyun.com可覆盖所有二级域名),根据业务需求选择是否允许空Referer访问(比如用户直接在浏览器地址栏输入文件地址、部分端内访问的场景需要开启该选项),结果:域名列表和空Referer开关配置完成。
4. 配置非法访问时的返回规则,可选返回403 Forbidden状态码,或填写自定义跳转地址引导用户到官网等页面,结果:非法访问的响应逻辑配置完成。
5. 点击保存配置,系统自动同步规则到所有存储节点,结果:防盗链规则提交成功,一般1-5分钟内全局生效。
6. 测试规则有效性:分别使用合法域名嵌入资源、非法域名嵌入资源、直接输入文件地址(空Referer场景)三种方式访问测试文件,结果:合法场景可正常访问资源,非法场景返回预设的错误状态码或跳转页面。
7. 若需要批量配置多个存储桶的防盗链规则,可通过S3官方SDK调用PutBucketReferer接口批量提交配置,结果:多个存储桶的防盗链规则同步配置完成。
如果是Cloudreve、Alist、PicGo、WordPress等程序对接对象存储的场景,防盗链规则在对象存储服务端配置即可,无需修改程序端的S3存储对接参数。
四、常见错误
配置过程中容易出现以下问题,可对应排查即可解决:
- 1. 域名规则填写错误,比如多写了http/https前缀、通配符位置错误,导致合法域名也被拦截,解决建议:检查域名格式无需填写协议前缀,仅填写域名本身,通配符仅支持放在域名最前端,不能放在域名中间或后缀位置。
- 2. 误关闭空Referer权限,导致用户直接访问文件地址、部分小程序/APP内访问资源失败,解决建议:如果业务需要支持直接地址访问、端内无Referer的访问场景,建议开启允许空Referer的选项。
- 3. 规则配置后未立即生效,解决建议:先清理本地DNS缓存和浏览器缓存,等待5分钟后再测试,部分服务商的规则同步到所有节点需要一定时间。
- 4. 配置白名单后CDN回源失败,解决建议:检查CDN的回源域名未加入白名单列表,CDN回源时会携带回源域名作为Referer,需要将该域名加入白名单才能正常回源。
- 5. 私有权限的文件防盗链不生效,解决建议:防盗链规则仅对设置了公开读权限的文件生效,私有文件需要通过签名访问,本身不会触发防盗链校验。
五、示例说明
以下是通用的白名单模式防盗链配置示例,无需填写真实信息,仅作参考:
- 规则类型:白名单
- 允许的域名列表:
www.7caiyun.com
*.www.7caiyun.com
test.another.com
- 允许空Referer:是
- 非法访问返回状态码:403
- S3 API配置参数示例:
```xml
<RefererConfiguration>
<AllowedMethod>GET</AllowedMethod>
<AllowedOrigin>www.7caiyun.com</AllowedOrigin>
<AllowedOrigin>*.www.7caiyun.com</AllowedOrigin>
<AllowedOrigin>test.another.com</AllowedOrigin>
<AllowEmptyReferer>true</AllowEmptyReferer>
</RefererConfiguration>
```
六、更简单的方案
如果不想自行搭建维护MinIO等自建存储服务,不想自己维护服务器存储节点、不想折腾自建存储的防盗链规则迭代,也可以选择兼容S3协议的公有云对象存储服务,控制台内置可视化的防盗链配置模块,不需要自行开发维护规则解析逻辑。如果你需要一个兼容S3协议、适合程序接入、图床、网盘系统存储源和下载分发的对象存储服务,可以了解 七彩云对象存储,按照控制台的可视化配置页面只需填写域名列表即可快速完成防盗链配置,站长和开发者可以快速上手。
七、FAQ
1. 防盗链配置会影响私有文件的访问吗?
答:不会,防盗链规则仅对设置了公开读权限的文件生效,私有文件访问需要携带签名参数,不会触发防盗链校验,无需担心私有文件的正常访问被拦截。
2. 配置防盗链后还能通过S3 API上传、删除文件吗?
答:不会被拦截,防盗链仅校验GET类的资源访问请求,上传、删除、修改配置等操作需要携带密钥校验权限,不受防盗链规则影响。
3. 可以配置多个通配符域名吗?
答:大部分支持S3协议的对象存储都支持通配符配置,比如*.www.7caiyun.com可以覆盖所有二级域名,需要注意通配符只能放在域名的最左侧,不能放在中间或者后缀位置,比如example.*这类配置不支持。
4. 配置了防盗链之后微信小程序内访问资源被拦截怎么办?
答:首先确认小程序的业务域名已经加入白名单,如果小程序请求不带Referer的话可以开启允许空Referer的选项,或者将小程序的官方请求域名加入白名单即可解决。
八、总结
对象存储防盗链配置整体流程简单清晰,先明确业务侧的合法域名范围,准备好存储桶的配置权限,在控制台配置对应的Referer规则,保存后测试验证即可完成配置,适合网站附件存储、图床、视频存储、下载站、资源站等需要防止资源被非法盗刷流量的场景使用。如果是对接Cloudreve、Alist、PicGo、WordPress等程序对接对象存储的场景,直接在对象存储服务端配置即可,不需要修改程序端的存储对接参数,配置成本很低,几乎不会影响现有业务的正常运行。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网