一、结论
商用图床的图片防盗链完整设置核心分为存储侧规则配置和程序侧对接两步,首先需要准备好支持S3协议的对象存储服务的Endpoint、AccessKey、SecretKey、Bucket、Region等接入信息,再依次配置防盗链规则和程序对接即可实现全链路的防盗链能力,有效避免非授权域名引用带来的额外流量损耗。
二、准备工作
操作前需要提前准备好以下内容:
- 支持S3协议的对象存储服务账号
- 已创建的用于存储图片资源的存储桶Bucket
- 对象存储服务提供的Endpoint地址、AccessKey、SecretKey、Region信息
- 正在使用的图床程序(如PicGo、Chevereto、自建图床系统等)或站点程序(如WordPress、Halo等)
- 已备案的自定义域名(若使用自定义域名作为图片访问入口)
- 需要部署图床的站点域名清单
三、操作步骤
1. 配置存储桶基础访问权限
登录对象存储控制台,找到对应存储桶的权限设置页面,关闭存储桶的公共读、公共遍历权限,仅为对接图床程序使用的AccessKey授予上传、读取资源的权限,操作完成后可直接访问存储桶原始链接测试,确认无法直接查看存储桶内的资源列表,避免未授权用户批量拉取图片。
2. 配置Referer防盗链规则
在存储桶的安全设置中找到防盗链配置项,选择白名单模式,将所有需要引用图片的站点域名、图床域名完整填入白名单列表,根据业务需求选择是否开启「禁止空Referer访问」选项,保存规则后生效,操作完成后使用非白名单域名引用图片测试,确认返回403拒绝访问错误。
3. 配置URL签名校验规则
在存储桶的访问控制设置中开启URL签名校验功能,根据业务场景设置签名的有效时长(普通资讯类站点可设置为24小时,动态内容站点可设置为1-2小时),保存配置后,所有未携带有效签名的图片访问请求都会被拒绝,就算图片链接被恶意转发,超过有效期后也无法正常访问。
4. 图床程序S3对接配置
打开所用图床程序或站点插件的存储设置页面,选择S3兼容存储类型,依次填写提前准备好的Endpoint、AccessKey、SecretKey、Bucket、Region信息,同时找到「生成签名URL」的配置项并开启,若使用自定义域名则同步填写绑定的图片访问域名,保存配置后测试上传一张图片,确认程序可以正常上传到存储桶且返回的访问链接携带签名参数。
5. 全场景防盗链效果测试
首先在已加入白名单的站点页面插入测试图片,确认可以正常加载显示;再使用未加入白名单的本地HTML页面引用同一张图片,确认返回403错误;最后复制生成的签名URL,等待超过有效时长后再次访问,确认无法正常加载,三项测试全部通过即代表防盗链规则已正常生效。
6. 配置异常访问告警
在对象存储控制台的告警中心设置防盗链相关告警规则,比如当单日403拒绝访问请求量超过阈值、流量出现异常突增时通过短信、邮件发送通知,方便及时发现批量盗链行为,必要时可调整防盗链规则或新增黑名单拦截恶意IP。
四、常见错误
1. Referer规则配置错误
常见问题为漏填站点域名、域名填写时多带了路径后缀或符号,导致自己的站点也无法正常加载图片,解决建议是先将所有常用的站点域名、测试域名全部加入白名单,确认自身站点访问正常后再开启「禁止空Referer」选项。
2. 签名有效时长设置不合理
若设置时长过短会导致用户打开页面时图片已经过期无法加载,设置过长则起不到防盗链效果,解决建议是根据站点内容属性调整,不需要频繁更新的静态图片可设置7天有效期,动态内容、付费内容的图片可设置15-30分钟有效期。
3. 存储桶公共权限未关闭
部分用户配置防盗链之前已经开启了存储桶公共读权限,导致就算配置了Referer和签名规则,恶意用户仍然可以通过存储桶原始地址直接访问图片,解决建议是重新检查存储桶的访问策略,仅保留指定AccessKey的读写权限,关闭所有公共访问入口。
4. 图床程序未开启签名生成
部分图床程序默认不会生成带签名的访问URL,导致存储桶开启签名校验后所有图片都无法访问,解决建议是在程序的S3配置项中找到「签名URL」「私有读」相关的开关,手动开启后重新生成图片链接测试。
5. 自定义域名CNAME绑定错误
使用自定义域名作为图片访问入口时,若域名解析的CNAME地址错误,会导致防盗链规则不生效,解决建议是检查域名解析记录,确认CNAME指向对象存储服务提供的正确地址,同时在存储桶控制台完成自定义域名的绑定和验证。
五、示例说明
存储桶侧防盗链通用配置示例
- Referer白名单:https://your-domain.com、https://img.your-domain.com
- 禁止空Referer:按需开启
- 访问签名校验:开启
- 签名有效时长:24小时
- 存储桶权限:关闭公共读,仅授权指定AccessKey拥有读写权限
图床程序S3通用配置示例
- 存储类型:S3兼容存储
- Endpoint:填写对象存储服务提供的访问地址
- AccessKey:填写你获取的访问密钥ID
- SecretKey:填写你获取的访问密钥密码
- Bucket:填写存储桶名称
- Region:根据服务要求填写对应区域标识
- 生成签名URL:开启
- 自定义域名:填写你绑定的图片访问域名
六、更简单的方案
如果不想自己搭建MinIO等自建对象存储服务、不想花费时间维护服务器、存储扩容和安全防护,也可以直接选用成熟的兼容S3协议的云对象存储服务,开箱即可使用防盗链、签名URL、流量防护等能力,不需要额外开发调试。如果你需要一个兼容S3协议、适合图床搭建、图片存储分发、不限流量下载的对象存储服务,可以了解 七彩云对象存储,直接在控制台即可完成所有防盗链规则配置,对接各类主流图床、站点程序。
七、FAQ
Q:配置了禁止空Referer之后,微信、QQ等社交平台内打开我的站点图片不显示怎么办?
A:部分社交平台的内置浏览器发送的请求不会携带Referer字段,开启禁止空Referer后就会导致这些场景下图片无法访问,可以根据业务需求决定是否关闭该选项,或者将社交平台的官方域名加入Referer白名单。
Q:开启签名URL会不会影响搜索引擎抓取我的站点图片,不利于图片SEO?
A:如果有图片SEO需求,可以单独在对象存储控制台配置搜索引擎爬虫的IP段白名单,允许爬虫免签名访问图片,或者针对图片资源设置更长的签名有效期,避免搜索引擎抓取时链接过期。
Q:除了Referer和签名URL,还有没有其他的防盗链方式可以叠加使用?
A:可以配置UA黑名单,拦截常见的采集工具、盗链程序的UA标识,也可以配合CDN的边缘规则做更复杂的校验,比如基于用户访问频次的限流规则,拦截高频恶意盗链请求。
Q:我用WordPress搭建的个人博客,怎么对接这套防盗链方案?
A:可以在WordPress中安装支持S3协议的存储插件,按照上述步骤填写S3接入信息并开启签名URL生成开关,同时在存储桶侧将你的博客域名加入Referer白名单即可,不需要修改站点核心代码。
八、总结
商用图床的完整防盗链设置核心是「云存储侧规则+程序侧校验」的两层防护体系,先完成对象存储的基础配置和接入凭证获取,再依次配置Referer规则、签名校验规则,最后在图床或站点程序中完成对接测试即可生效。这套方案适合个人站长、开发者搭建商用图床、站点附件存储、图片分发等场景,既能有效避免盗链带来的额外流量成本,也能保障图片访问的稳定性,不需要复杂的开发即可快速落地。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网