一、结论
公有云图床的图片防盗链设置核心是在对象存储的存储桶配置中配置Referer黑白名单规则,搭配对应访问权限控制即可实现,操作前需要提前准备好S3协议对应的接入信息,包括Endpoint、AccessKey、SecretKey、Bucket、Region等,配置完成后测试不同来源的图片访问状态即可验证规则是否生效。
二、准备工作
- 公有云对象存储的有效账号
- 已创建完成、用于存储图床图片的存储桶Bucket
- 存储服务官方提供的Endpoint访问地址
- 拥有存储桶配置权限的AccessKey和对应SecretKey
- 存储桶所属的Region信息
- 已完成基础配置的S3协议图床客户端(如PicGo、各类CMS的S3插件等)
- 若干用于测试访问的图片文件
- 提前梳理好需要允许访问图片的站点域名列表
三、操作步骤
1. 登录公有云对象存储控制台,进入对应图床存储桶的配置管理页面,结果是可以看到存储桶的所有可配置项,包括权限管理、访问控制、防盗链相关的功能入口。
2. 在存储桶配置列表中找到「防盗链」或「Referer访问控制」的功能模块,点击进入配置界面,结果是可以看到当前的防盗链规则状态,默认一般为关闭状态,所有来源的请求都可以正常访问存储桶内的资源。
3. 选择防盗链规则类型,通常分为白名单和黑名单两种模式,图床场景一般选择白名单模式,仅允许指定来源的站点访问图片,结果是进入白名单规则的编辑状态。
4. 填写允许访问的Referer域名,支持通配符匹配(如匹配二级域名可使用*.yourdomain.com),同时根据需求选择是否允许空Referer访问(比如用户直接在浏览器地址栏输入图片地址、部分移动端APP内嵌访问的场景),结果是完成规则内容的填写。
5. 保存防盗链配置,部分云服务会有1-2分钟的规则生效延迟,结果是防盗链规则正式提交到存储系统,开始对新的访问请求生效。
6. 回到本地的图床上传工具,上传一张测试图片,获取图片的公网访问链接,结果是得到用于测试规则有效性的有效图片地址。
7. 分别从允许的域名站点、禁止的域名站点、直接浏览器地址栏访问该图片链接,验证返回状态,结果是确认符合规则的来源可以正常加载图片,不符合的来源返回403拒绝访问状态,代表配置生效。
8. 若使用PicGo、Halo、WordPress等程序对接S3协议作为图床存储源,不需要额外修改程序配置,存储桶层面的防盗链规则会自动对所有存储的图片生效。
四、常见错误
1. Referer域名格式填写错误,比如漏写http/https前缀,或者通配符使用不符合平台规范,导致允许的域名也被拦截,解决建议是查看平台的Referer配置说明,按照示例格式填写,域名结尾不要加多余的路径后缀。
2. 误关闭了空Referer访问权限,导致用户直接打开图片链接、或者部分移动端APP内嵌访问时被拦截,解决建议是根据自身业务场景判断,若需要支持直接访问则勾选允许空Referer选项。
3. 存储桶的公共访问权限设置和防盗链规则冲突,比如存储桶本身设置了私有读写,即使防盗链允许也无法访问图片,解决建议是先确认存储桶的访问权限为公共读(图床场景通常需要该配置),再调整防盗链规则。
4. 规则生效延迟导致测试失败,刚保存的规则立即测试出现不符合预期的情况,解决建议是等待2-5分钟后清除浏览器缓存再重新测试,排除规则未同步到所有节点的问题。
5. 通配符配置范围过大,比如直接配置*允许所有来源访问,导致防盗链完全失效,解决建议是仅添加自身业务需要的域名,非必要不要使用全匹配通配符。
五、示例说明
假设我们要搭建个人博客的图床,允许博客主域名、所有二级域名、本地开发环境、用户直接地址栏访问图片,通用配置示例如下:
- 防盗链模式:白名单
- 允许的Referer列表:
https://*.yourblog.com、http://localhost:* - 允许空Referer:是
- 存储桶访问权限:公共读
- S3接入基础配置:
- Endpoint:填写对象存储服务提供的访问地址
- AccessKey:填写你自己的访问密钥
- SecretKey:填写对应密钥
- Bucket:填写你的图床存储桶名称
- Region:根据服务方要求填写对应区域标识
六、更简单的方案
如果不想自己搭建私有对象存储服务、不想花时间维护服务器和复杂的权限规则,也可以直接选择成熟的兼容S3协议的公有云对象存储服务,不需要额外维护底层基础设施,控制台自带可视化的防盗链配置界面,几分钟就能完成设置。如果你需要一个兼容S3协议、适合图床搭建、附件存储和下载分发的对象存储服务,可以了解 七彩云对象存储,支持标准S3接口,可以直接适配PicGo、WordPress、Halo等常用的图床和CMS程序,不需要额外做适配修改。
七、FAQ
1. 问:设置防盗链之后,我自己的图床上传工具还能正常上传图片吗?
答:防盗链规则仅控制图片的访问权限,上传操作通过S3密钥鉴权,不受防盗链规则影响,只要你的AccessKey权限正常就可以正常上传、删除、管理图片资源。
2. 问:防盗链可以限制特定的IP地址访问吗?
答:常规的防盗链功能仅基于Referer字段控制,若需要IP黑白名单控制,可以搭配存储桶的访问控制策略(ACL)或者对接CDN后使用CDN的访问控制规则实现。
3. 问:设置防盗链之后,之前已经被其它站点缓存的图片还能访问吗?
答:已经被第三方CDN或者用户浏览器缓存的图片,在缓存有效期内仍然可以访问,缓存过期后再次向源站发起请求就会触发防盗链规则被拦截。
4. 问:我用的是第三方图床程序,不是直接用云控制台的话,还能设置防盗链吗?
答:可以,防盗链是存储桶层面的规则,和你使用什么上传程序无关,只要存储在对应对象存储桶里的资源,都会遵守你在控制台设置的防盗链规则。
八、总结
整个公有云图床的防盗链设置流程可以归纳为准备接入信息、进入存储桶配置页面、设置Referer规则、保存后测试验证四个核心环节,操作难度低,不需要编写代码,普通站长和开发者十几分钟就能完成配置。该方案适合个人博客图床、资源站图片存储、小程序图片资源存储、电商站点商品图存储等需要防止图片被恶意盗刷流量的场景,搭配S3协议的兼容能力,可以适配绝大多数主流的建站和图床工具,有效降低不必要的流量支出。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网