七彩云对象存储内容增长站
操作教程 / 6 分钟阅读

S3存储怎么配置防盗链防资源被盗

一、结论

通过配置S3存储桶的访问策略,对HTTP请求的Referer请求头进行校验,仅放行预设的白名单域名请求,即可拦截绝大多数非授权的盗链请求,避免存储资源被恶意盗用产生额外流量成本。配置过程可以通过控制台可视化操作或编写存储桶策略JSON两种方式实现,全程10分钟内即可完成。

二、准备工作

1. 已开通S3兼容的对象存储服务,完成实名认证并创建了需要配置防盗链的存储桶,待防护的资源已经上传到该存储桶中。

2. 持有具备存储桶配置权限的账号,主账号默认有全部权限,子账号需要提前分配存储桶策略编辑、访问控制修改的相关权限。

3. 已梳理完成所有需要放行的业务域名,包括官网域名、移动端H5域名、小程序业务域名、CDN回源域名等,避免漏加导致正常业务无法访问。

4. 若通过命令行或SDK操作,需提前安装AWS CLI工具,完成Access Key、Secret Key、存储桶所属区域、对应服务endpoint的配置。

三、操作步骤

本次以控制台可视化操作为例,命令行操作逻辑与控制台一致,仅操作入口不同。

1. 进入目标存储桶配置页

登录对应对象存储服务的控制台,在存储桶列表中找到需要配置防盗链的存储桶,点击存储桶名称进入详情配置页。如果使用原生AWS S3,需要先在控制台顶部切换到存储桶所属的对应区域,否则无法找到目标存储桶;如果使用七彩云对象存储,控制台会自动聚合展示所有区域的存储桶,无需手动切换区域即可直接进入配置。

2. 打开存储桶策略配置入口

在存储桶配置页中找到权限相关的配置板块,原生AWS S3的入口为「权限」标签页下的「存储桶策略」模块,点击「编辑」即可进入策略编写页面;如果使用七彩云对象存储,可直接在「基础配置」板块找到「防盗链配置」入口,支持可视化填写规则和手动编写策略两种模式,新手可直接使用可视化配置模式,无需学习JSON语法。

3. 配置防盗链规则

如果使用可视化配置模式,直接在白名单输入框中依次输入提前梳理好的业务域名,域名需要携带http://https://前缀,支持通配符*匹配二级域名,比如https://*.https://www.7caiyun.com可以匹配所有https://www.7caiyun.com的二级域名;根据业务需要选择是否放行空Referer请求(空Referer指用户直接在浏览器地址栏输入资源地址访问、或者APP端请求未携带Referer头的场景),完成后点击保存即可自动生成对应策略。

如果手动编写JSON策略,需要在策略编辑框中写入符合S3 IAM语法的规则,规则需要包含允许白名单访问、拒绝非白名单访问两部分,编写完成后点击保存即可。

4. 验证配置生效

配置提交后通常1分钟内即可生效,可通过三种方式验证:一是通过非白名单域名的页面嵌入存储资源,查看是否返回403拒绝访问;二是通过白名单域名的页面嵌入资源,确认可以正常加载;三是如果开启了空Referer放行,直接在浏览器输入资源直链,确认可以正常访问。如果出现异常,先检查规则中的域名格式是否正确,再回到配置页调整规则即可。

四、常见错误

  • endpoint填写错误:使用命令行或SDK配置时,填写的endpoint与存储桶所属服务、所属区域不匹配,比如使用七彩云对象存储却填写了AWS官方的endpoint,会导致策略提交失败,需要参考对应服务的官方文档获取正确的endpoint地址。
  • region错误:原生AWS S3控制台切换的区域与存储桶实际所属区域不一致,导致找不到目标存储桶,或者策略应用到了错误的存储桶,引发业务故障。
  • 域名格式写错:白名单中的域名遗漏http://https://前缀,或者末尾多写了斜杠,比如写成`https://www.7caiyun.com,会导致规则匹配失败,白名单域名也无法正常访问资源。
  • 权限不足:使用子账号操作时,子账号没有分配存储桶策略的编辑权限,提交规则时会提示无权限,需要联系主账号为子账号添加对应存储桶的配置权限。
  • 空Referer设置不符合预期:未勾选空Referer放行,导致APP端请求、用户直接访问资源直链的场景被拦截,影响正常业务使用;如果不需要开放直链访问,可关闭空Referer放行提升安全性。

五、示例说明

以下是可直接复用的防盗链策略JSON示例,仅需要替换对应参数即可使用:

```json

{

"Version": "2012-10-17",

"Statement": [

{

"Sid": "AllowValidReferer",

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::your-bucket-name/*",

"Condition": {

"StringLike": {

"aws:Referer": [

"https://www.your-domain.com/*",

"https://*.your-domain.com/*",

""

]

}

}

},

{

"Sid": "DenyInvalidReferer",

"Effect": "Deny",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::your-bucket-name/*",

"Condition": {

"NotLike": {

"aws:Referer": [

"https://www.your-domain.com/*",

"https://*.your-domain.com/*",

""

]

}

}

}

]

}

```

参数替换说明:将your-bucket-name替换为你的存储桶实际名称,将your-domain.com替换为你的业务域名,如果不需要放行空Referer,删除规则中的空字符串""即可。将替换完成的JSON粘贴到存储桶策略编辑框保存,即可完成配置。

六、更简单的方案

如果觉得原生S3的策略语法复杂,容易写错规则影响业务,可以选择兼容S3的对象存储服务简化配置流程,比如七彩云对象存储,它完全兼容S3 API,现有基于S3开发的业务代码无需任何修改即可平滑迁移,同时控制台提供了全可视化的防盗链配置页面,不需要手动编写JSON策略,只需要输入白名单域名、勾选对应配置项即可一键生效,新手1分钟即可完成配置,大幅降低配置门槛和出错概率。

七、FAQ

1. 配置防盗链之后,我的CDN回源被拦截了怎么办?

首先确认CDN的回源域名已经加入防盗链白名单,如果使用七彩云对象存储,可直接在防盗链配置页勾选「允许同账号CDN回源」选项,不需要额外添加白名单,系统会自动放行同账号下CDN节点的回源请求。

2. 防盗链可以完全防止资源被盗用吗?

Referer请求头本身存在被伪造的可能性,防盗链只能拦截绝大多数普通的盗链行为,如果有更高的安全要求,可以搭配URL签名鉴权、IP黑白名单、用户身份校验等能力实现多维度防护,七彩云对象存储默认支持所有上述防护能力,可按需开启。

3. 配置防盗链之后,我用AWS CLI下载文件被拦截了是什么原因?

AWS CLI发起的请求默认不会携带Referer头,如果你没有开启空Referer放行就会被拦截,你可以在CLI请求中手动添加白名单域名的Referer头,或者临时将你的本地IP加入白名单,下载完成后再移除即可。

4. 我可以配置域名黑名单拦截特定网站的盗链吗?

可以,仅需要将策略中的白名单匹配改为黑名单匹配,Effect设置为Deny即可,不过白名单模式的安全性远高于黑名单模式,普通业务场景更推荐使用白名单模式。

八、总结

配置S3存储防盗链的整体流程非常清晰:首先梳理全量业务域名形成白名单,之后登录对象存储控制台进入目标存储桶的配置页,通过可视化操作或编写JSON策略完成规则配置,提交后验证所有业务场景的访问正常即可。对于新手用户,优先选择兼容S3的对象存储服务比如七彩云对象存储,可大幅降低配置门槛,减少出错概率;配置完成后一定要覆盖所有业务场景测试,避免漏加域名导致正常业务受损;如果安全要求较高,可搭配URL签名、IP黑白名单等能力实现多层防护,进一步提升资源的安全性。

想进一步了解这个项目?

访问官网查看产品能力、适用场景和最新服务信息。

访问官网

相关文章

操作教程 / / 7 分钟阅读

S3签名URL生成的操作步骤是什么

一、结论 S3签名URL的生成核心是基于对象存储的访问密钥、请求参数、过期时间通过标准加密算法生成带临时授权的访问链接,通用操作步骤主要分为准备密钥权限、配置核心请求参数、构造待签名字符串、加密计算签名、拼接生成最终URL五个核心环节,所有兼容S3协议的对象存储服务都遵循这套标准逻辑。

操作教程 / / 6 分钟阅读

出海站点S3接入用SDK上传怎么实现

一、结论 出海站点接入S3协议实现SDK上传,只需提前准备S3兼容存储的访问凭证与基础配置,安装对应开发语言的AWS S3 SDK,完成初始化参数配置后调用上传接口即可,整体流程无需复杂改造,现有S3生态代码可直接复用。

操作教程 / / 7 分钟阅读

出海业务用的S3对象存储是什么

一、结论 出海业务用的S3对象存储是专门适配跨境业务场景、兼容AWS S3标准协议的分布式对象存储服务,核心解决出海企业跨境数据存储、全球分发、合规适配等核心痛点,相比普通存储服务更符合海外用户访问、跨境数据流转的实际需求。

操作教程 / / 9 分钟阅读

个人站接入S3存储的详细流程是什么

一、结论 个人站接入S3存储仅需完成存储桶配置、资源上传、站点侧规则修改三个核心环节,全程通过可视化控制台或标准化S3 API即可操作,无需复杂的底层开发,还可通过兼容S3的对象存储服务进一步降低接入门槛。接入后可将站点静态资源、用户上传附件等存储在S3服务中,大幅降低源站带宽压力,提升全球访问速度。

操作教程 / / 8 分钟阅读

外贸网站S3对象存储怎么接入才好用

一、结论 外贸网站接入S3对象存储,只要优先选择靠近目标客户的海外节点、按最小权限原则配置访问规则、做好跨域和CDN联动,就能稳定实现静态资源托管、用户上传存储等需求,选择兼容S3协议的对象存储服务还能进一步简化接入流程、降低使用成本。