OSS防盗链怎么设置?
把图片和文件存到OSS后,很多站长会遇到一个头疼的问题:辛苦上传的图片被其他网站直接盗链使用,白白消耗自己的流量和费用。OSS提供了防盗链功能,可以有效阻止未授权的访问。本文将详细讲解两种防盗链方案的配置方法,帮你保护好自己的存储资源。
为什么需要设置防盗链?
如果不设置防盗链,你的OSS资源可能面临以下风险:
| 风险类型 | 具体表现 | 造成的损失 |
|---|---|---|
| 流量费用暴增 | 其他网站直接引用你的图片URL | 每月多花几百到几千元流量费 |
| 带宽被占用 | 大量盗链请求消耗OSS带宽 | 自己网站访问速度变慢 |
| 内容被盗用 | 原创图片、视频被无授权使用 | 版权和SEO权重受损 |
| 安全风险 | 恶意爬虫批量下载资源 | 存储成本增加,数据泄露风险 |
某图片站因为没设置防盗链,被一个流量大站盗用了首页图片,一个月流量费暴涨到3000元,远超正常水平的10倍。设置防盗链后,流量费恢复到正常的300元/月。
方案一:Referer白名单(推荐新手使用)
Referer防盗链是最简单常用的方案,通过检查请求来源域名来判断是否允许访问。
- 登录OSS控制台:进入对应的Bucket,找到「权限管理」→「防盗链」设置页面。
- 添加Referer白名单:填入允许访问的域名,如
*.yourdomain.com,支持通配符匹配子域名。 - 选择是否允许空Referer:如果需要支持直接在浏览器地址栏访问图片,建议允许空Referer;如果完全禁止外部访问,选择不允许。
- 保存配置:配置立即生效,无需重启或等待,可以立即测试效果。
- 白名单域名: *.yourdomain.com, yourdomain.com
- 允许空Referer: 是(兼容APP和部分浏览器)
- 生效时间: 立即生效
- 适用场景: 网站图片、CSS/JS静态资源
Referer可以被伪造,安全性不是100%,但对于普通的盗链拦截已经足够。如果需要更高安全性,建议搭配URL鉴权方案一起使用。
方案二:URL鉴权(推荐重要文件使用)
如果是私密文件、付费内容或需要更高安全性的场景,建议使用URL鉴权(签名URL)方案。
| 对比项 | Referer白名单 | URL鉴权 |
|---|---|---|
| 安全性 | 中等(可被伪造) | 高(基于密钥签名,无法伪造) |
| 配置复杂度 | 简单(控制台点击配置) | 较复杂(需要代码生成签名) |
| 链接有效期 | 永久有效 | 可设置过期时间(如1小时) |
| 适用场景 | 公开图片、静态资源 | 付费内容、私密文件、临时下载链接 |
URL鉴权的核心原理:在URL中加入签名参数,签名基于AccessKey和过期时间计算,服务器验证签名是否有效再决定是否返回文件。
- 付费视频: 生成1小时有效的播放链接
- 私密文档: 仅登录用户可访问,链接30分钟过期
- 临时下载: 生成一次性下载链接,用完即失效
- 实现方式: 调用OSS SDK的签名URL接口
两种方案如何选择?
根据你的文件类型和安全需求,选择合适的防盗链方案:
✅ 用Referer白名单的场景
- 公开的网站图片、Logo、静态资源
- 不需要频繁生成临时链接
- 技术能力有限,希望简单配置
- 主要防止其他网站盗链引用
❌ 需要用URL鉴权的场景
- 付费内容(视频、电子书、软件)
- 用户隐私文件(身份证、合同)
- 需要精确控制访问时间和次数
- 对安全性要求极高的业务
大部分网站可以两种方案组合使用:公开的静态资源(图片、CSS、JS)用Referer白名单,简单省心;涉及用户隐私或付费的内容用URL鉴权,安全性更高。这样既能防止盗链,又不会给正常访问增加太多复杂度。
常见配置错误和排查方法
设置防盗链后如果出现访问异常,可以按以下步骤排查:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 自己网站图片也打不开 | 白名单域名没写全或格式错误 | 检查域名格式,确保包含www和非www版本 |
| APP端图片无法显示 | APP请求没有Referer | 开启「允许空Referer」选项 |
| CDN加速后图片失效 | CDN回源请求Referer与配置不匹配 | 在白名单中加入CDN回源域名 |
| URL鉴权链接立即失效 | 服务器时间不同步导致签名过期 | 校准服务器时间,使用NTP同步 |
配置防�90链后,务必在自己的网站上全面测试一遍,包括电脑端、手机端、APP端访问。避免因为配置错误导致自己的用户也无法正常访问图片和文件。
常见问题
设置防盗链后会影响百度收录吗?
如果配置正确,不会影响收录。需要在Referer白名单中加入百度搜索引擎的爬虫域名(如baidu.com),或者选择「允许空Referer」,这样百度爬虫抓取图片时不会被拦截。
Referer防盗链能100%防止盗链吗?
不能。Referer是可以被伪造的,技术能力强的盗链者可以绕过Referer检测。但对于90%以上的普通盗链场景已经足够有效。如果需要更高安全性,建议搭配URL鉴权方案。
URL鉴权链接过期后还能访问吗?
不能,链接过期后会返回403拒绝访问错误。这正是URL鉴权的核心价值:可以精确控制文件的访问时效,适合付费内容和临时下载场景,避免链接被无限制传播使用。
设置防盗链需要额外付费吗?
不需要。OSS的防盗链功能是免费的基础功能,包含在OSS服务中,无需额外付费。只需在控制台简单配置即可使用,性价比很高,建议所有OSS用户都开启防盗链保护。
总结
OSS防盗链是保护存储资源、控制流量成本的重要手段。对于公开的网站图片和静态资源,Referer白名单配置简单,几分钟就能设置好,能拦截绝大部分盗链行为。对于付费内容或隐私文件,建议使用更安全的URL鉴权方案,精确控制访问时效。两种方案可以组合使用,兼顾安全性和易用性。设置完成后务必全面测试,确保不影响自己网站和APP的正常访问。