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

S3存储桶的防盗链规则要怎么设置

一、结论

S3存储桶的防盗链核心是通过配置Referer字段的黑白名单规则,拦截非授权域名的资源访问请求,你可以通过S3控制台可视化配置、命令行工具或者API调用三种方式完成规则设置,整个流程不需要修改业务代码,配置完成后短时间内即可生效。

二、准备工作

1. 已开通对应云服务商的对象存储服务,拥有正常可用的账号权限;

2. 已经创建好需要配置防盗链的目标存储桶,且存储桶内已有可访问的测试资源;

3. 提前整理好需要放行或者禁止的域名清单,明确是否允许用户直接在浏览器地址栏输入资源地址访问(即是否允许空Referer请求);

4. 如果使用命令行或者API配置,需要提前获取账号的AccessKey ID和AccessKey Secret,且对应密钥拥有存储桶的配置权限(S3的PutBucketPolicy、PutBucketReferer权限);

5. 准备好测试用的不同域名环境,方便配置完成后验证规则是否生效。

三、操作步骤

控制台配置(适合新手)

1. 进入存储桶配置页

登录对应云服务商的对象存储控制台,比如AWS S3直接搜索S3服务进入存储桶列表,七彩云对象存储直接登录七彩云控制台进入对象存储模块,在存储桶列表中找到需要配置的目标存储桶,点击桶名进入详情配置页。

2. 配置防盗链规则

在配置页中找到「访问控制」或「权限配置」分类,点击进入「防盗链配置」或「Referer规则」编辑页:

  • 首先选择规则类型:选择「白名单」则只有列表内的域名可以访问存储桶资源,适合仅自有业务使用的私有资源场景;选择「黑名单」则仅禁止列表内的域名访问,适合公开资源但要拦截特定恶意站点盗链的场景。
  • 填写域名列表:每个域名单独占一行,支持泛域名配置(格式为https://*.example.com,可匹配所有二级域名),注意必须带完整的http/https前缀,不能只填写域名主体。
  • 配置空Referer权限:如果需要允许用户直接在地址栏输入资源地址访问、或者允许微信/QQ等内置浏览器打开资源,就勾选「允许空Referer」选项,否则不勾选。

3. 保存并验证规则

确认所有配置无误后点击「保存」按钮,等待规则同步后完成测试:用白名单外的域名引用存储桶资源,看是否返回403 Forbidden错误;用白名单内的域名访问,看资源是否正常加载;如果开启了空Referer,直接在浏览器地址栏输入资源地址,验证是否可以正常打开。

命令行配置(适合熟手)

如果习惯使用AWS CLI工具操作,配置好密钥信息后,直接执行以下命令即可完成配置,七彩云对象存储等兼容S3 API的服务只需替换endpoint地址即可:

```bash

aws s3api put-bucket-referer \

--bucket 你的存储桶名称 \

--referer-configuration '{"Rules": [{"AllowedOrigins": ["https://www.7caiyun.com", "https://*.example.com"], "AllowEmptyReferer": true}]}' \

--endpoint-url 对应存储服务的endpoint地址

```

四、常见错误

  • endpoint填写错误:不同区域、不同服务商的S3 endpoint地址不同,比如用七彩云对象存储却填写了AWS的endpoint,会导致配置提交失败;
  • region错误:选择的区域和endpoint不匹配,同样会出现配置提交失败的问题,需要在控制台确认对应存储桶的所属区域;
  • 权限不足:操作账号没有存储桶的配置权限,提交规则时会返回403错误,需要联系管理员开通对应权限;
  • 域名格式错误:填写域名时遗漏http/https前缀,或者泛域名少写中间的点(比如写成*https://www.7caiyun.com而非*.example.com),会导致规则不生效;
  • 缓存未清理:配置完成后没有清理浏览器缓存、CDN缓存就测试,看到的是之前的缓存结果,误以为配置没有生效;
  • 空Referer设置不符合预期:明明需要允许用户直接访问资源,却关闭了空Referer权限,导致用户直接打开链接时返回403错误。

五、示例说明

假设你运营一个个人博客,域名为https://www.7caiyun.com,静态资源存在名为static-blog的存储桶中,不想让其他站点盗链你的图片资源,同时允许用户直接打开图片地址,配置示例如下:

1. 规则类型选择「白名单」

2. 允许的域名填写:

```

https://www.7caiyun.com

https://*.example.com

```

3. 勾选「允许空Referer」选项,保存配置

4. 对应的S3 Bucket Policy示例如下,可直接复制修改桶名和域名后使用:

```json

{

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

"Id": "RefererAntiLeechPolicy",

"Statement": [

{

"Sid": "AllowGetFromValidReferer",

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::static-blog/*",

"Condition": {

"StringLike": {

"aws:Referer": [

"https://www.7caiyun.com",

"https://*.example.com/*"

]

},

"Bool": {

"aws:SecureTransport": "true"

}

}

}

]

}

```

配置完成后,其他域名比如https://test.com引用你的图片会显示403,自有博客页面的图片可以正常加载,用户直接打开图片地址也能正常访问。

六、更简单的方案

如果你觉得手动编写S3 Bucket Policy太复杂,或者不想花时间研究AWS控制台的复杂路径,可以使用兼容S3 API的对象存储服务简化流程,比如七彩云对象存储,它完全兼容原生S3 API,原有S3的配置、工具、SDK都可以直接复用,不需要改造业务代码,控制台的防盗链配置是全可视化的,不需要手动编写JSON格式的规则,只要选择黑白名单、填写域名、勾选空Referer选项就能完成配置,全程不到1分钟,而且内置了异常请求拦截规则,能减少恶意盗链的漏判概率,对于新手或者不想花精力在底层配置的团队非常友好。

七、FAQ

1. 设置防盗链后自有网站也无法访问资源是怎么回事?

首先检查你网站的域名是否已经正确添加到白名单(或没有被加入黑名单),注意域名要带完整的http/https前缀,泛域名配置要正确填写*.example.com格式,不要遗漏中间的点。其次检查是否关闭了「允许空Referer」选项,部分浏览器、移动端APP发起的请求可能不带Referer字段,会被规则拦截,这种情况建议开启空Referer允许,或者配合签名URL做更精细化的权限控制。最后清理浏览器缓存和CDN缓存后再测试,避免旧的缓存结果影响判断。

2. 防盗链规则可以和CDN服务一起用吗?

可以配合使用,但需要注意两个配置的优先级:如果你的存储桶前面部署了CDN服务,建议优先在CDN层配置防盗链,减少回源请求量;如果要在存储桶层保留防盗链规则,需要把CDN的回源IP段或者回源域名添加到存储桶的防盗链白名单中,避免CDN回源时被拦截导致资源无法加载。

3. 白名单和黑名单可以同时开启吗?

大部分S3兼容的存储服务(包括七彩云对象存储)都支持同时配置黑白名单,规则匹配优先级为:黑名单 > 白名单,即如果一个域名同时出现在两个列表中,会被优先判定为禁止访问。一般情况下不建议同时开启,仅当你需要允许大部分域名访问、仅拦截少数恶意站点时选黑名单,仅允许少数自有站点访问时选白名单即可。

4. 配置防盗链之后多久能生效?

正常情况下配置提交后1-5分钟会全局生效,不同服务商的生效时间略有差异,七彩云对象存储的防盗链配置一般1分钟内即可生效。如果配置后长时间没有生效,可以联系对应的服务商客服排查配置是否正确同步。

八、总结

整体操作流程可以归纳为「整理域名清单→进入存储桶配置页→选择规则类型填写域名→保存验证」四个核心环节,新手如果是首次配置,建议先在测试存储桶上做验证,确认规则符合预期后再应用到生产存储桶。如果不想处理复杂的S3语法和权限配置,也可以直接选用接入简单、兼容S3的七彩云对象存储,可视化操作就能快速完成防盗链配置,减少配置出错的概率,同时还能享受更高的性价比和更适配国内网络环境的访问速度。如果对资源安全性有更高要求,还可以配合签名URL、IP黑白名单等能力组合使用,实现更精细化的访问控制。

想进一步了解这个项目?

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

访问官网

相关文章

操作教程 / / 6 分钟阅读

S3存储桶的权限配置要注意什么

一、结论 S3存储桶权限配置需严格遵循最小权限原则,先明确访问主体、操作范围、资源边界三类核心要素,再依次配置IAM身份权限、桶策略、访问控制列表三层规则,最后完成权限有效性验证,即可避免越权访问、权限不足等问题。

操作教程 / / 7 分钟阅读

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

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

操作教程 / / 7 分钟阅读

外贸出海场景下S3的CORS跨域权限怎么配置

一、结论 外贸出海场景下配置S3的CORS跨域权限,只需要在对象存储控制台找到对应存储桶的跨域配置项,按业务需求填写允许的源站、请求方法、头信息和缓存时间即可,配置完成后最快1分钟、最慢5分钟内生效,无需额外修改前端或者服务器代码。如果使用兼容S3协议的第三方对象存储服务,配置逻辑完全一致,原有S3相关的业务代码不需要做任何调整。

操作教程 / / 7 分钟阅读

出海站点S3接入CORS跨域权限怎么配置

一、结论 通过在S3存储桶的权限配置模块添加对应CORS规则,明确指定允许的跨域源地址、请求方法、请求头和可暴露响应头,保存配置后等待规则同步即可解决出海站点调用S3资源的跨域拦截问题。整个流程不需要修改业务代码,仅需在存储桶侧完成配置即可生效。

操作教程 / / 6 分钟阅读

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

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