最近出现的安全漏洞可以说是一个接着一个:10 月 20 日至 21 日,安全研究团队公开披露 PHP 存在高危远程代码执行漏洞组合。10 月 28 日,技术社区与 Reddit 集中出现大量求助帖,多名用户的群晖 NAS 存储空间被占满,文件被追加 .LOCK3D 或 .L0CK3D 后缀,目录内生成勒索说明文件 read-me3.txt。
看到 PHP 漏洞的第一时间,我就想到了自己的图床是基于 PHP 的 Chevereto,于是立刻在群晖中停止了该服务。而群晖勒索病毒出现后,我又不得不断开群晖的公网连接并收紧安全策略。两个因素叠加注定了博客图床服务短期内无法恢复,因此我对图床进行了迁移。
旧图床 Chevereto
博客中原来使用的图床是 Chevereto。Chevereto 最初是免费开源的自托管图床,后续经历 V2 和 V3 的重构转变为买断制商业授权,官方在移除部分收费特性后开辟了独立的开源免费分支 Chevereto-Free。随着 V3 的最后一个版本发布,官方宣布停止维护免费分支,并对商业授权策略进行了调整,将买断制转变为了订阅制,这在社区中引发了激烈的讨论。
商业策略变化后,官方发布了 V4 版本并统一了免费版本和收费版本的代码库,在后续的发展过程中,官方支持了多租户并持续修复了波及旧版本的漏洞。时至今日,Chevereto 仍然是一个功能极其完备且社区媒体展示界面成熟的图床方案。
为什么选择 Cloudflare R2?
上文提到 Chevereto 有一个免费的开源分支,我部署的是基于该分支修改的多语言版本 chevereto-free-multi-language,现在已经迁移到 Cloudflare R2,选择 Cloudflare R2 的考量因素主要有以下几点。
技术健壮性和稳定性
追根究底,这次要迁移图床不单单是因为群晖可能遭受勒索攻击,而是 Chevereto 基于 PHP 开发,PHP 的漏洞影响范围广、危险程度高。对于个人来说,出现漏洞后第一时间发现、跟进和修复是不太可能的,这些环节不仅耗时耗力,而且可能依赖上游修复,更何况近两年 AI 发展迅速,漏洞的挖掘和利用也更迅速了。
相比于传统 PHP 栈,媒体存储场景下的 R2 安全攻击面更窄,属于被动静态存储,没有执行环境,因此天然免疫服务端代码执行。此外,R2 是纯 S3 API 驱动,与运维解耦,没有宿主操作系统维护负担。
服务范围和用量
选型期间,我也考虑过开源项目 CloudFlare-ImgBed,这是一个支持 Docker 和 Serverless 部署的多渠道聚合管理项目。但是根据过往的使用经验,我需要的只是一个专门服务博客的图床,各大社交平台和论坛基本都自带图床,所以没有其他使用场景。
此外,当前博客的图片总量不到 100 张,文章更新频率低,使用习惯是低频但峰值高,峰值主要集中在文章撰写的过程中。R2 免费版存储容量为 10GB / 月,A 类操作 100 万次 / 月,B 类操作 1000 万次 / 月,下行流量免费,对于个人用户来说绰绰有余。

网络和可用性
Cloudflare 的大名可以说是家喻户晓,由于其慷慨的免费服务,网友还冠以“大善人”的爱称。Cloudflare R2 依托 Cloudflare 的全球 CDN 网络,在世界各地都有较好的访问速度。
尽管从中国大陆访问 Cloudflare 服务的速度相对较差,但博客本身就部署在 Cloudflare Pages 上,没有做备案也没有在中国大陆的搜索引擎做 SEO,因此能够访问到博客内容的用户基本都能够拥有较好的全球连接,大陆直连这个弱点可以算是规避掉了。
PicList 增强体验
存量图片的迁移上,由于新图床使用了 MD5 命名规则区分同一天上传的文件,我在将旧图片全量上传至 R2 后,借助 AI 识图对比完成了往期文章的旧链接替换。
仅仅把图片从 NAS 迁移到 R2 是不够的,写作过程中插入图片一定要低摩擦,最好是截图后能一键上传并粘贴对应格式的链接到文章中,否则会极大影响写作积极性。在使用 Chevereto 时,我搭配的是 PicGo,PicGo 是一款极简的图片上传工具,其中内置了 7 种基础服务,可以通过第三方插件支持 WebDAV 等协议的图床。
本次图床迁移后,我选择了基于 PicGo 开发的 PicList 工具。相比于 PicGo,PicList 原生支持 20 多种图床,其中就包含 Cloudflare R2。它原生支持 S3 协议,内置完整的文件管理,可以双向管理云端数据。此外,PicList 还内置了图片处理工具,能够在上传前进行压缩、格式转换和去除 EXIF 信息等操作。首次设置好后,编写文章时只需要截图、快捷键上传然后粘贴即可。
自托管还是好选择吗?
AI 的发展无疑是一把双刃剑,以前遇到想要但是没有的功能,得经历漫长的学习、开发和纠错过程。现在只要和 AI 说一声想要什么,AI 就能帮你实现,这无疑催生了大量的自部署服务。但是,在没有足够的工程、网络和安全等知识积累的情况下,AI 创造的工程在质量上是值得怀疑的。
与此同时,AI 辅助漏洞挖掘被恶意利用后,本就漏洞百出的服务可以说是雪上加霜,暴露在公网环境下,轻则服务不可用,重则泄露个人信息甚至造成财产损失。
在这基础上,随着越来越多的漏洞被发现和利用,自部署服务的维护成本也在不断提高,这不禁让我思考将来自部署是否还是一个好选择。相比于个人,拥有更多资源、安全体系更完善的大厂在响应速度和安全防护上通常更有保障,有时候选择成熟的第三方服务可能是比自部署更好的方案。至于未来如何发展,还得观察 AI 会以什么样的速度发展到什么样的程度。
参考文献
- Pricing · Cloudflare R2 docs
Cloudflare R2 的定价信息
评论