本文由 腾讯云国际站代理商『翼龙云/TG @Yilongcloud 撰写』如需转载请注明!
重要前置提示
- Referer 防盗链可作为辅助防护,可以被爬虫伪造,不可作为唯一防盗刷手段;携带签名的预签名 URL 请求会直接跳过 COS 防盗链校验腾讯云。
- 如果业务使用 CDN / EdgeOne 加速域名访问资源,防盗链、CORS 规则需要配置在 CDN/EdgeOne 侧,COS 存储桶内配置不再生效腾讯云。
- 出海投放 TikTok、Facebook 广告场景,社媒外链访问经常为空 Referer,直接拒绝空 Referer 会出现广告素材 403 打不开问题。
1. 关闭公共读权限(基础访问控制)
配置背景
若在测试阶段将存储桶权限设为 “公有读私有写”(Public Read),且上线后未及时修改,任何获取文件 URL 的用户均可下载桶内数据。这不仅涉及数据安全,也可能带来合规与高额流量账单风险。
注意:存储桶设置私有读写后,如果手动给单个对象设置公有读权限,会绕过桶级别权限,造成数据泄露。
操作建议
- 默认私有读写:创建存储桶时应首选 “私有读写”(Private)。对于存量存储桶,需在控制台 “权限管理” 中核实并修改桶访问权限。
- 按需授权对外资源:必须对外公开的文件,优先后端代码生成带过期时间的预签名 URL;或利用 CAM(访问管理)策略,为子账号授予最小化权限。业务尽量避免使用根账号永久 SecretID/SecretKey,上传下载优先使用 STS 临时密钥。
- 权限验证:修改完成后,浏览器无痕模式直接访问对象原始链接。若返回 AccessDenied(HTTP 403),代表公共读权限已经关闭。
- 合规基线:建议开启存储桶SSECOS 服务端默认加密,新上传对象自动加密,满足海外数据加密合规要求。
2. CORS 精准域名配置(跨域资源共享)
配置背景
当外部前端网站需浏览器直接请求 COS 资源,受浏览器同源策略限制,必须配置 CORS。若 Allowed Origins 简单设置为*,会允许任意站点调用资源,扩大安全风险。
注意:业务接入 CDN/EdgeOne 加速域名,跨域规则需要在 CDN/EdgeOne 控制台配置,COS 桶内 CORS 配置不生效腾讯云。 如果前端开启xhr.withCredentials = true携带 Cookie,Origin 不能配置*,必须填写完整具体域名,否则浏览器直接跨域报错腾讯云。
操作建议
- 限定业务域名:CORS 规则填写完整业务域名,必须携带 http/https 协议头,支持二级泛域名*.shturl.cc/mmJ4,一行填写一个来源,不要末尾带斜杠。非特殊场景不使用通配符*。
- 最小化方法与 Header:仅开放业务必需请求方法,静态素材业务一般仅放开GET、HEAD;需要浏览器直传文件再补充PUT、POST;AllowedHeaders 按需放行业务请求头。
- 排错参考:前端出现跨域报错,优先检查 Network 面板 Origin 请求头,与控制台配置完全匹配;预检 OPTIONS 请求失败重点核对 Methods、Headers 配置。
3. 防盗链配置(Referer 机制,辅助防护)
配置背景
图片、视频素材被第三方网站直接引用,会消耗 COS 外网下行流量,产生异常账单。HTTP Referer 防盗链是辅助防护手段,Referer 头部可被恶意爬虫伪造,无法彻底根治盗刷,不可单独依赖该方案腾讯云。
重要机制:请求携带预签名 URL 签名时,COS 防盗链校验直接跳过;如果走 CDN/EdgeOne 域名访问,防盗链配置需要在加速侧设置,COS 侧配置无效腾讯云。
配置策略参考
| 配置类型 | 机制说明 | 适用场景 | 风险提示 |
| 白名单 | 仅允许列表内域名访问 | 自有官网业务域名 | 安全性较高,出海投放广告场景注意评估空 Referer 策略,避免广告素材 403 |
| 黑名单 | 拒绝特定域名访问 | 屏蔽已知恶意采集站点 | 无法防护攻击者频繁更换域名的盗刷行为 |
| 空 Referer | 控制无 Referer 头请求 | 浏览器直接粘贴链接访问、社媒广告外链跳转 | 关闭会阻断社媒广告素材;开启会给爬虫留下绕过空间,建议搭配其他防护手段 |
空 Referer 出海业务处理建议
- 纯官网业务、无社媒广告投放:建议拒绝空 Referer。
- TikTok/Facebook 等广告投放业务:需要允许空 Referer;同时建议配合 CDN/EdgeOne Bot 管理能力,拦截高频恶意空 Referer 访问,平衡广告可用与防盗刷效果。
4. 配套审计与告警(必做运维)
- 开启 COS 访问日志:进入日志管理 – 日志存储;源存储桶与日志目标桶必须选择同一地域,不建议日志存储写入当前业务桶。日志存在延迟,仅用于问题溯源,不作为计费对账依据腾讯云。
- 配置云监控告警:对 COS 外网流出流量设置阈值告警,流量突增及时感知盗刷风险。
- 定期审计 CAM 子账号密钥、存储桶权限,清理闲置密钥。
总结
配置腾讯云国际 COS 遵循最小权限原则(PoLP):存储桶默认私有读写、精准 CORS 跨域、Referer 防盗链做辅助防护;出海广告业务要重点评估空 Referer 对广告素材的影响。 建议开启访问日志与流量告警,定期审计权限,结合 CDN/EdgeOne 能力,构建多层防护,避免出现数据泄露与异常账单。
常见问题 (FAQ)
Q1:腾讯云国际版 COS 如何正确配置 CORS 跨域访问? A:存储桶「安全管理」找到 CORS 设置,填写带协议的业务域名,不建议直接填*;仅开放业务需要的 HTTP 方法。若业务使用 CDN/EdgeOne 加速,跨域规则需要配置在加速平台侧。如果前端开启 withCredentials 携带 Cookie,Origin 不能使用通配符。
Q2:COS 配置了 Referer 防盗链,但是盗刷依旧发生? A:Referer 请求头可以被脚本伪造;携带预签名 URL 的请求会跳过防盗链校验。Referer 仅做辅助防护;建议存储桶保持私有读写,对外使用带有效期预签名 URL,搭配 CDN 侧鉴权、Bot 防护多层策略。
Q3:开启防盗链后,Facebook/TikTok 广告打开图片返回 403? A:社媒外链跳转访问经常产生空 Referer 请求;防盗链白名单模式下,需要勾选「允许空 Referer」,同时建议在 EdgeOne 开启 Bot 管理拦截高频恶意访问,兼顾广告展示和安全。
Q4:关闭公共读后,网站图片无法正常显示? A:桶私有读写后匿名访问返回 403。解决方式:后端动态生成预签名 URL;或者接入 CDN/EdgeOne,开启私有桶回源授权,由加速节点完成资源分发。
Q5:COS 访问 403,如何区分是权限问题还是防盗链拦截? A:返回AccessDenied代表匿名访问私有桶或者 CAM 权限不足;返回You are denied by bucket referer rule代表被防盗链策略拦截。
Q6:开启访问日志有什么注意事项? A:源桶与日志目标桶必须同一地域,不建议日志写入业务本身存储桶;日志存在采集延迟,用于故障溯源,不作为计费计量依据
作者:翼龙云/Yilongcloud
