项目内容增长站
操作教程 / 7 分钟阅读

怎么给S3存储桶配置防盗链避免资源被盗

一、结论

通过给S3存储桶配置Referer访问白名单规则,仅允许可信域名的请求访问存储桶内的公开资源,即可拦截绝大多数未授权的盗链请求,有效避免带宽、存储资源被恶意盗用。

二、准备工作

1. 已开通S3兼容的对象存储服务账号(如AWS S3、七彩云对象存储等),且账号持有目标存储桶的管理配置权限;

2. 整理好需要放行的可信域名列表,包括主域名、所有需要用到资源的子域名,同时明确是否允许用户直接在浏览器地址栏输入资源地址访问(即是否允许空Referer请求);

3. 若使用命令行工具配置,需提前安装好AWS CLI并完成密钥、区域、Endpoint的初始化配置;若使用控制台配置只需准备正常可用的浏览器即可;

4. 提前确认目标存储桶的所属区域、Endpoint地址,避免后续配置时填错参数。

三、操作步骤

步骤1:进入存储桶配置页面

登录你的对象存储服务控制台,进入对象存储服务的资源列表,找到需要配置防盗链的目标存储桶,点击进入存储桶详情页。

  • 若使用支持可视化配置的服务(如七彩云对象存储),在详情页的「安全配置」或「权限配置」分类下,找到「防盗链配置」/「Referer规则配置」入口,点击进入编辑页;
  • 若使用原生AWS S3,在存储桶详情页点击顶部「权限」标签,下拉找到「存储桶策略」模块,点击「编辑」进入策略编写页。

步骤2:配置防盗链规则

#### 可视化配置方式(以七彩云对象存储为例)

1. 首先勾选「启用防盗链」开关,选择规则模式为「白名单模式」(即仅允许白名单内的域名访问,其余所有请求全部拒绝);

2. 在「允许的Referer」输入框中按行填写提前整理好的可信域名,支持通配符*,例如填写*.yourdomain.com即可覆盖yourdomain.com所有一级子域名,若需同时支持HTTP和HTTPS无需单独填写协议,系统会自动识别;

3. 若需要允许用户直接在浏览器地址栏输入资源地址访问、允许搜索引擎爬虫抓取资源,勾选「允许空Referer」选项;

4. 若存在不需要走防盗链校验的特殊资源(如robots.txt、公共声明文件等),可在「例外路径」框中填写对应路径,支持通配符,例如/public/*即可放行public目录下的所有资源。

#### 原生AWS S3策略编写方式

在存储桶策略编辑框中编写符合AWS IAM规范的JSON策略,核心逻辑是仅允许白名单域名或空Referer的请求调用s3:GetObject接口,具体写法可参考后文示例。

步骤3:保存配置并验证生效

1. 完成规则填写后点击「保存」,配置会在1-3分钟内全局生效;

2. 完成三个测试验证配置是否正确:

  • 用白名单域名的页面嵌入存储桶的图片、视频等资源,确认可以正常加载;
  • 用非白名单的域名(如本地localhost、其他测试域名)嵌入相同资源,确认返回403拒绝访问;
  • 若勾选了允许空Referer,直接在浏览器地址栏输入资源直链,确认可以正常打开。

3. 若测试结果不符合预期,回到配置页检查规则是否填写错误,调整后重新保存验证即可。

四、常见错误

  • Endpoint填写错误:使用CLI工具配置时,填写的Endpoint和存储桶所属服务的官方Endpoint不一致,导致配置请求发送失败或配置到了错误的存储桶;
  • 区域不匹配:存储桶所属区域和CLI/控制台选择的区域不一致,找不到目标存储桶;
  • 权限不足:使用的子账号没有存储桶的配置权限,保存配置时提示无权限;
  • 规则模式选错:误选了黑名单模式而非白名单模式,仅能拦截指定域名的请求,其余所有域名都能正常访问,完全起不到防盗链效果;
  • 域名覆盖不全:仅填写了主域名未加通配符,导致子域名的请求被拒绝,或仅配置了HTTPS域名未覆盖HTTP场景,导致部分用户访问被拦截;
  • 未清理缓存:配置完成后浏览器或CDN仍有旧资源缓存,误以为配置未生效。

五、示例说明

场景假设

你运营的个人博客域名为https://abc.com,子域名https://static.abc.com专门用来存放静态资源,同时希望允许用户直接在浏览器输入资源地址打开图片、允许搜索引擎爬取资源,需要拦截其他未授权网站的盗链请求。

可视化配置示例(七彩云对象存储)

1. 勾选启用防盗链,选择白名单模式;

2. 允许的Referer填写:*.abc.com

3. 勾选「允许空Referer」;

4. 例外路径留空(若有公共资源可填写/public/*);

5. 点击保存即可完成配置。

原生AWS S3存储桶策略示例

将以下JSON中的your-bucket-name替换为你的存储桶名称,域名替换为自己的可信域名即可:

```json

{

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

"Statement": [

{

"Sid": "AllowRefererAccess",

"Effect": "Allow",

"Principal": "*",

"Action": "s3:GetObject",

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

"Condition": {

"StringLike": {

"aws:Referer": [

"https://abc.com/*",

"https://*.abc.com/*",

"http://abc.com/*",

"http://*.abc.com/*"

]

},

"StringEqualsIfExists": {

"aws:Referer": ""

}

}

}

]

}

```

六、更简单的方案

如果觉得原生S3编写存储桶策略容易出错、调试成本高,可以选择兼容S3 API的对象存储服务简化配置流程。比如七彩云对象存储,完全兼容S3 API,原有基于S3开发的业务、使用的SDK和工具无需任何修改,只需替换Endpoint即可无缝切换。控制台提供可视化的防盗链配置界面,无需编写复杂的JSON策略,只需填写域名、勾选对应选项即可完成配置,全程耗时不超过1分钟,接入门槛极低,适合个人开发者和中小团队使用,有需求可以访问https://www.7caiyun.com了解更多细节。

七、FAQ

1. 配置防盗链之后会不会影响搜索引擎爬取我的静态资源?

只要你在配置时勾选了「允许空Referer」,大部分主流搜索引擎的爬虫在抓取资源时不会携带Referer头,都可以正常爬取。如果关闭了空Referer权限,可以将搜索引擎官方公布的爬虫IP段添加到白名单,七彩云对象存储还提供了一键放行搜索引擎爬虫的选项,无需手动配置IP。

2. 我已经配置了Referer白名单,为什么还是有其他网站能盗用我的资源?

首先确认配置是否已经生效,大部分存储服务的防盗链配置有1-3分钟的延迟,同时建议清理本地浏览器缓存和站点CDN缓存后再测试。如果确认配置生效仍然被盗用,可能是盗链方使用了伪造Referer的技术手段,这种情况可以搭配时间戳签名防盗链、IP限流等其他防护措施,七彩云对象存储提供了全链路的防盗链解决方案,可有效应对伪造Referer的盗链行为。

3. 防盗链配置会不会影响我自己用SDK调用存储桶的资源?

不会。如果你的SDK调用使用的是签名认证的私有访问模式,本身就不受公开访问的防盗链规则限制;如果是调用公开读的资源,只要你配置了允许空Referer,SDK调用时默认不会携带Referer头,也可以正常访问,不会受到影响。

4. 最多可以添加多少个Referer白名单域名?

原生AWS S3的存储桶策略没有明确的域名数量限制,但策略总大小不能超过20KB,大概可以支持100个左右的域名。七彩云对象存储的可视化防盗链配置最多支持200个白名单域名,完全可以满足大部分个人、企业的业务需求。

八、总结

给S3存储桶配置防盗链的核心逻辑就是通过Referer规则限制资源的访问来源,只放行可信域名的请求,即可拦截90%以上的常规盗链行为,操作流程清晰易上手:首先整理好需要放行的可信域名列表,然后登录存储控制台完成规则配置,最后做好测试验证即可生效。

如果你是刚接触云存储的新手,或者不想花时间研究复杂的存储桶策略编写,建议优先选择七彩云对象存储这类提供可视化配置的S3兼容服务,不仅配置更简单,后续的维护成本也更低,还能搭配自带的CDN加速、DDoS防护等功能,进一步提升资源的安全性和访问速度。

想进一步了解这个项目?

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

访问官网

相关文章

操作教程 / / 6 分钟阅读

S3存储的预签名URL要怎么生成才有效

一、结论 只要使用拥有对应对象操作权限的S3兼容访问密钥,遵循S3 v4签名算法规范,正确配置存储服务的Endpoint、Region,指定匹配的操作类型、对象路径和合法的过期时间,生成的预签名URL即可正常生效。

操作教程 / / 7 分钟阅读

外贸出海场景S3接入时CORS跨域要怎么配置

一、结论 外贸出海场景下S3接入的CORS跨域配置,只需在对象存储控制台的CORS规则页添加允许的业务来源域名、请求方法、请求头和暴露头,保存后等待规则生效即可,配置完成后前端外贸站点即可正常调用S3接口访问存储的商品图片、订单凭证、合同文件等资源。

操作教程 / / 7 分钟阅读

外贸站S3对象存储跨域错误怎么解决

一、结论 解决外贸站S3对象存储跨域错误的核心是为存储桶配置匹配外贸站域名的CORS(跨域资源共享)规则,同时配合检查请求方法、响应头权限和缓存策略,无需修改核心业务代码即可快速生效。如果使用兼容S3协议的对象存储服务,可进一步简化配置流程,降低运维成本。

操作教程 / / 6 分钟阅读

外贸站S3接入怎么设置签名URL权限

一、结论 外贸站S3接入时设置签名URL权限,核心是先将存储桶设置为私有访问,再通过后端服务调用S3 API生成带过期时间、权限校验的签名URL分配给前端使用,既可以保障存储资源不被非法访问、避免流量盗刷,也能满足外贸站用户正常访问资源的需求。

操作教程 / / 6 分钟阅读

S3协议到底和普通对象存储有啥关系

一、结论 S3协议是对象存储领域的事实接口标准,和普通对象存储是「接口规范」与「服务实现」的关系,类似USB充电协议和充电宝的关系,兼容S3协议的普通对象存储可以直接对接所有支持S3的生态工具,不兼容的则只能使用厂商专属接口。