You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅允许特定网站访问S3存储桶内的图片资源

S3存储桶防盗链配置失效排查及修复方案

核心实现逻辑

通过校验请求的Referer请求头实现访问控制,仅白名单内的站点可以正常拉取图片资源,无有效Referer的直接访问请求会被拦截返回403,完全匹配「禁止直接下载、允许站点预览」的需求。


1. 存储桶策略修正

直接替换原有策略为下方模板,替换占位符后即可生效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowGetFromWhitelistedSite",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::你的存储桶名称/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://你的域名.com/*",
                        "https://www.你的域名.com/*",
                        "http://你的域名.com/*",
                        "http://www.你的域名.com/*"
                    ]
                }
            }
        },
        {
            "Sid": "DenyAllNonWhitelistedAccess",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::你的存储桶名称/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "https://你的域名.com/*",
                        "https://www.你的域名.com/*",
                        "http://你的域名.com/*",
                        "http://www.你的域名.com/*"
                    ]
                }
            }
        }
    ]
}

策略常见错误点:

  • 遗漏路径通配符/*,仅配置根域名会导致子路径下的页面请求被拦截
  • 未同时配置http/https、带www/不带www版本的域名,和实际请求Referer不匹配
  • Deny规则优先级高于Allow,必须保证两条规则的白名单完全一致

2. CORS配置校验

如果站点跨域加载图片异常,需要配置对应CORS规则,参考模板如下:

[
    {
        "AllowedHeaders": ["*"],
        "AllowedMethods": ["GET"],
        "AllowedOrigins": [
            "https://你的域名.com",
            "https://www.你的域名.com"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

3. 配置失效常见排查点

  • 打开浏览器F12网络面板,确认站点图片请求的Referer头值和白名单配置完全匹配
  • 已接入CloudFront或其他CDN的场景,必须配置CDN透传Referer请求头到S3源站,否则S3无法拿到Referer会统一拦截请求
  • 确保存储桶「阻止公共访问」的4项配置全部开启,否则自定义策略可能被公共权限覆盖
  • 检查是否存在其他高优先级的IAM权限、桶策略绕过了Referer校验规则,比如给全局用户开了无限制的GetObject权限
  • 如果使用CloudFront OAC/OAI访问S3,需要确保OAC/OAI的访问权限和当前Referer策略不冲突

内容的提问来源于stack exchange,提问作者cgrant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:15:04