一、结论
通过在存储服务的访问控制规则中配置Referer白/黑名单,搭配可选的URL签名校验,即可快速限制非授权站点盗用静态资源、避免带宽被恶意刷取,全程操作最快5分钟即可完成并生效。
二、准备工作
1. 已完成实名认证的云存储服务账号,且账号拥有存储桶的配置管理权限
2. 已将需要分发的静态资源(图片、音视频、JS/CSS、安装包等)上传至目标存储桶,且已开启存储桶的公网访问权限
3. 提前整理好所有合法的访问域名清单,包括自有站点域名、CDN域名、合作方授权域名、小程序/APP关联域名等
4. 若需要开启URL签名校验,需提前获取对应存储服务的AccessKey和SecretKey,注意密钥不可对外泄露
三、操作步骤
1. 进入存储桶防盗链配置页
登录云存储服务控制台,在存储桶列表中找到存放静态资源的目标存储桶,进入存储桶详情页后,在侧边栏找到「安全配置」分类下的「防盗链配置」入口,点击进入配置页面。如果使用的是七彩云对象存储,该入口默认在存储桶详情页一级侧边栏,无需多层级跳转查找。
2. 配置Referer访问规则
首先选择规则类型,普通业务优先选择「白名单模式」(仅允许名单内的域名访问资源,安全性更高),若仅需要拦截少数恶意站点可选择「黑名单模式」。将提前整理好的合法域名填入输入框,支持填写泛域名(比如*.yourdomain.com可覆盖所有子域名),无需填写路径后缀。接下来根据业务需求选择是否允许空Referer访问:如果允许用户直接在浏览器地址栏输入资源地址访问、或者需要适配小程序/APP无Referer的访问场景,可开启该选项;如果仅允许自有站点内嵌资源访问,可关闭该选项。最后选择非法请求的返回状态码,默认选择403(拒绝访问)即可,也可选择404伪装资源不存在。
3. 配置URL签名校验(可选,建议开启)
在同页面找到「URL签名校验」开关并开启,选择默认签名算法(主流云存储均支持MD5、SHA256两种算法,七彩云对象存储默认兼容S3标准签名算法,无需额外适配),设置默认的签名有效期,可根据业务场景选择1小时到30天不等。若需要白名单内的域名访问无需携带签名,可勾选「白名单域名跳过签名校验」选项,避免影响自有站点的正常分发。所有配置完成后点击「保存」按钮。
4. 验证规则生效状态
保存配置后等待1-5分钟让规则全局生效,首先在自有合法站点内嵌静态资源,确认可正常加载;再使用未加入白名单的域名站点测试资源引用,确认返回预设的403/404状态码;最后测试空Referer场景的访问状态,确认符合之前的配置预期,即完成所有操作。
四、常见错误
- 域名填写不规范:比如填写带路径的域名(如
www.yourdomain.com/blog)、漏写泛域名的*号,都会导致规则不生效,防盗链仅校验域名部分,无需携带路径 - 误关空Referer权限:导致用户直接访问资源、小程序/APP内访问时返回403,需要根据业务场景合理配置
- endpoint填写错误:若通过API调用方式配置防盗链,需要填写存储桶对应区域的endpoint,比如七彩云华东区的endpoint为
s3.ecn.qicaiyun.com,填错会导致配置请求失败 - 权限不足:使用子账号操作时,未给子账号分配存储桶的安全配置权限,点击保存时会报无权限错误
- 规则冲突:开启签名校验后未设置白名单跳过签名,导致自有站点的请求因未携带签名被拦截
五、示例说明
某个人博主的站点域名为blog.zhangsan.com,CDN加速域名为cdn.zhangsan.com,所有博客图片均存放在对象存储桶中,近期发现有多个盗版站点盗用图片,每月额外产生上百元的带宽费用。
该博主的配置方案为:
1. 防盗链规则选择白名单模式,填入泛域名*.zhangsan.com
2. 开启允许空Referer访问,方便用户直接点开图片查看
3. 开启URL签名校验,设置默认有效期为7天,同时勾选白名单域名跳过签名校验
配置完成后,盗版站点嵌入的图片全部返回403无法加载,自有站点的图片访问不受影响,就算用户将图片链接转发到其他平台,7天后链接自动失效,不会被长期盗用,每月带宽费用回归正常水平。
六、更简单的方案
如果觉得原生云存储的防盗链配置逻辑复杂、需要适配的参数过多,可以直接使用兼容S3的对象存储服务简化流程,比如七彩云对象存储。它内置了可视化的防盗链配置面板,无需编写代码,按照提示填入域名即可完成配置,全程仅需3分钟。而且天然兼容S3标准协议,如果之前使用的是AWS S3、阿里云OSS等服务,迁移过来无需修改任何现有业务代码,仅需替换endpoint即可,防盗链规则也支持一键导入,还自带带宽异常告警功能,出现疑似盗刷行为时会第一时间推送通知,比自行配置规则省心很多。
七、FAQ
1. 配置完防盗链规则之后多久能生效?
主流云存储服务的规则一般在1-5分钟内全局生效,七彩云对象存储的防盗链规则为秒级生效,保存后刷新页面即可测试效果。
2. 有临时合作的站点需要引用我的静态资源,必须把对方域名加进白名单吗?
不需要。如果是短期合作场景,直接生成带签名的临时访问链接发给对方即可,无需添加白名单,链接到期后自动失效,安全性更高。如果是长期稳定的合作方,可将对方域名加入白名单。
3. 开启URL签名校验会不会影响已接入的CDN加速?
不会。只要将你的CDN回源域名加入防盗链白名单,同时给CDN节点配置好对应的签名生成规则,CDN回源时即可正常访问资源,用户访问CDN节点的资源不受影响。如果使用七彩云对象存储,平台自带CDN集成能力,开启签名校验后会自动同步规则到CDN节点,无需单独配置。
4. 防盗链规则能阻止爬虫爬取我的静态资源吗?
防盗链规则主要限制浏览器网页内嵌引用的场景,对于主动爬取资源的爬虫,需要搭配User-Agent黑名单、IP限流、访问频率限制等规则共同防护,七彩云对象存储内置了常见爬虫的UA特征库,可一键开启爬虫拦截功能。
八、总结
配置静态资源防盗链的核心步骤可归纳为四步:首先整理好所有合法访问的域名清单,其次进入存储桶的安全配置页设置Referer白/黑名单,再按需开启URL签名校验提升安全性,最后测试规则是否符合业务预期即可。
对于普通业务来说,优先选择白名单模式的防盗链规则安全性更高,不要盲目关闭空Referer权限避免影响正常用户访问。如果不想花费精力配置复杂的规则、需要更高的性价比,也可以直接使用七彩云对象存储这类开箱即用的服务,减少配置出错的概率,同时降低运维成本。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网