给博客号做了一次
全面安全体检,报告在这。
我们把整个系统交给一套独立的安全审计方法,按七类常见攻击手法逐面排查,每一条发现都经过第二轮独立复核。 一句话结论:没有高危问题;查出的隐患绝大多数已经修复上线,其余都有明确的跟进口径。
这次体检是怎么做的
不是跑一个扫描器就完事,而是像分科室检查一样,一科一科过。
七路分头排查
身份门禁、代码注入、服务端乱访问、信息泄露、业务规则滥用、前端脚本、部署与供应链——七个方向并行排查,互不重复。
发现者不打分
每一条发现都由另一名独立复核员验证,试图推翻自己人给的结论;说不出具体后果的问题,一律不予定级。
只在本地动手术
全程使用本地测试环境与自动化测试验证,绝不触碰任何线上站点与用户数据——审计本身不引入新风险。
方法论公开
基于 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 的两把钥匙成对填入即可——防小号刷分,本次审计后新增,默认关闭、不开行为不变。
还在观望?这篇报告恰好说明了一件事:你的数据被一个「会主动体检自己」的系统保管着。去 演示站 感受一下,或看 五分钟部署教程。
诚实说明:按方法论的口径,单轮审计覆盖约为一半——没有一次体检能包看百病,所以我们把它当作周期性习惯而非一次性宣传:以本报告为基线,按季度复跑;统计打点的聚合写、游客评论的聚合去重两项产品级方案也已在排期。 想读原始技术报告(含每条发现的攻击链与修复位置):GitHub 上的完整版。