🛡️ 2026 年 10 月 12 日 · 全量安全审计(大众版)

给博客号做了一次
全面安全体检,报告在这。

我们把整个系统交给一套独立的安全审计方法,按七类常见攻击手法逐面排查,每一条发现都经过第二轮独立复核。 一句话结论:没有高危问题;查出的隐患绝大多数已经修复上线,其余都有明确的跟进口径。

0高危问题
27项发现 · 全部独立复核
21项已修复并带测试上线
7类攻击面逐项排查

这次体检是怎么做的

不是跑一个扫描器就完事,而是像分科室检查一样,一科一科过。

1

七路分头排查

身份门禁、代码注入、服务端乱访问、信息泄露、业务规则滥用、前端脚本、部署与供应链——七个方向并行排查,互不重复。

2

发现者不打分

每一条发现都由另一名独立复核员验证,试图推翻自己人给的结论;说不出具体后果的问题,一律不予定级。

3

只在本地动手术

全程使用本地测试环境与自动化测试验证,绝不触碰任何线上站点与用户数据——审计本身不引入新风险。

4

方法论公开

基于 Cloudflare 官方开源的 security-audit-skill 方法论裁剪执行,覆盖全部 35 个服务端模块、七套主题、前后台脚本、广场服务与部署配置。

修好的三件大事

八个较严重的问题全部坐实并处理,其中这三件最值得讲给你听(都已上线)。

🏃

「排队刷积分」被堵上了

原来:积分日上限存在并发缝隙

每位会员每天有积分上限。可当许多请求在同一瞬间涌入时,系统「先查今天发了多少、再记账」的两步之间有缝隙,可以插队刷分、把排行榜刷高。

✓ 现在:账本当场对账,插队的直接作废,并补了专门的竞态测试。
📔

「上锁的日记」不再露扉页

原来:设密码后开头摘要仍公开

给已发布的文章补设访问密码后,系统自动生成的开头摘要还挂在外墙上——订阅源和搜索卡片里能看到前 80 字正文,违背了「上锁就只露作者写的导读」的承诺。

✓ 现在:上锁的瞬间自动摘掉残留摘要,已经泄漏的保存一次即自愈。
📣

私密文章不再被广场转播

原来:锁文/删文在广场不下架

广场会收录站点的公开订阅源。你事后设为「仅会员可看」或已删除的文章,会被别人缓存的旧订阅继续带到公开广场,而且永远不会下架。

✓ 现在:加锁、删除会立刻通知广场撤下;订阅源带上机器可读的锁文标记,拉取方自动跳过。

27 项发现,每一项都有了归宿

较严重的 8 项全部确认属实;轻微的 19 项逐条处置,没有一个悬空。

✅ 加门锁 · 15 项已修复 已上线

超大提交先验 size 再处理(防内存被打爆)、演示站敏感面全部短路(备份/导出/外发抓取)、后台密钥全面打码、机器人消息防重、外链跳转页禁止被嵌入、编辑器预览加固、恢复文章不再挤占置顶名额、被封禁会员过审不再计分……

🚧 根治路上 · 2 项已缓解 持续跟进

「注册零验证、小号刷分」的根治方案 Cloudflare Turnstile 人机验证已于本周上线(后台设置即可开启);「统计打点可被刷」已把写入限流收紧到原来的四分之一,聚合写方案列入下轮设计。

📋 登记在案 · 4 项明确归属 有跟进口径

包括 workers.dev 平行入口(本周已核实并关闭)、TG 通知的旧格式兼容通道(重绑后移除)、游客评论的聚合去重(产品权衡)等——每一条都写在报告里,不是含糊的「已知问题」。

🔍 顺手的加固 · 全部完成 已上线

导出包条目名二次校验、卡片链接生成时过滤危险协议、主题配置查表防原型链穿透、关闭了 workers.dev 备用入口并重建了广场服务——审计报告里的遗留清单已在本周清账大半。

想看较严重的 8 项逐条清单?点开
问题(大白话)处置
积分每日上限可以被并发请求绕过已修 账本当场对账
注册没有任何验证成本,小号可批量刷分已根治 Turnstile 人机验证(本周上线)
超大的提交内容可能把服务打懵已修 进门先验大小,超限拒收
访问统计的打点接口可以被刷写已收紧 限流降到 1/4,聚合写列入设计
图片代理会盲目跟随跳转已修 逐跳复查白名单 + 流式限长
给已发布文章补设密码后,开头摘要仍公开已修 设锁即摘除,存量自愈
订阅源会把锁文带给公开广场已修 机器可读锁文标志,拉取自动跳过
锁文 / 删文在广场永不下架已修 加锁与删除即时广播撤下

体检确认健康的地方

审计不只是找问题——这些面被逐点核对过,结论是干净。

  • ✓注入零发现:全部数据库查询、渲染转义、XML 输出共 93 处逐点核对,没有一处可注入。
  • ✓门禁无遗漏:87 条接口的鉴权顺序逐条核对;伪造来源地址行不通。
  • ✓口令与会话:密码单向哈希存储,登录令牌只存指纹,Cookie 深度防御无缺口。
  • ✓前后端口径一致:前台脚本与服务端的安全规则逐字符镜像比对,零漂移。
  • ✓备份与清库:备份表清单与演示站清库清单全覆盖,不会漏带或多删。
  • ✓供应链干净:整个仓库扫不到任何密钥;运行时依赖依然只有 hono 一个。

如果你正在用博客号

这次审计对你意味着什么,以及需要你做的(很少)。

你需要做的

  • 升级到最新版:同步仓库最新代码重新部署即可,数据库结构自动迁移,没有任何手动操作。
  • 看看自己的版本号:登录后台 → 概览 → 「系统」卡,会显示「系统版本:博客号 vX.Y.Z」(本周新增)。
  • 顺手开启注册人机验证:后台 → 设置 → 会员,把 Cloudflare Turnstile 的两把钥匙成对填入即可——防小号刷分,本次审计后新增,默认关闭、不开行为不变。

还在观望?这篇报告恰好说明了一件事:你的数据被一个「会主动体检自己」的系统保管着。去 演示站 感受一下,或看 五分钟部署教程。

10 月 12 日 · 审计与修复七路排查 → 独立复核 → 21 项修复上线,自动化测试与冒烟全绿,CI 双流水线通过。
10 月 12 日 · 遗留清账关闭 workers.dev 备用入口、重建广场服务使锁文过滤生效、上线注册人机验证、后台新增版本号展示。
本周 · 公示这份大众版报告在官网发布;完整技术版随仓库收录,季度复跑以本轮为基线。

诚实说明:按方法论的口径,单轮审计覆盖约为一半——没有一次体检能包看百病,所以我们把它当作周期性习惯而非一次性宣传:以本报告为基线,按季度复跑;统计打点的聚合写、游客评论的聚合去重两项产品级方案也已在排期。 想读原始技术报告(含每条发现的攻击链与修复位置):GitHub 上的完整版。

博客号,博客好。

免费部署,代码全在 GitHub,MIT 开源——安全这件事,我们替你上心。