全部文章
安全深入1 分钟

给静态博客加后台,为什么不该先写登录系统

用 GitHub OAuth、账号白名单和仓库权限检查,为内容管理建立安全边界。

管理员通过 GitHub OAuth 和仓库权限检查更新博客的安全架构图

为博客增加一个密码输入框并不难。真正困难的是密码存储、会话续期、暴力破解、找回流程、审计和依赖升级。

对个人技术博客,更稳妥的方案是复用成熟身份系统。

把职责拆开

  • GitHub 保存 Markdown 内容并记录每次修改;
  • OAuth 负责确认管理员身份,不向博客暴露 GitHub 密码;
  • 回调函数 检查 GitHub 用户名和私有仓库写权限,拒绝其他账号;
  • Cloudflare Pages 在内容提交后重新构建公开网站。

后台不直接连接数据库,也不保存用户密码。即使公开网站出现前端漏洞,攻击者也无法得到一个可复用的管理员密码。

最小权限

内容仓库应独立于其他代码。需要注意,经典 GitHub OAuth 为了写入私有仓库必须申请 repo 权限,这个权限会覆盖账号可访问的全部私有仓库,无法只限定到博客仓库。更稳妥的做法是使用只管理博客的独立 GitHub 账号,并在服务端同时校验固定登录名和目标仓库的写权限。被拒绝账号的新令牌应立即撤销。

仍然需要维护的部分

无密码不等于无风险。管理员仍应开启 GitHub 两步验证,定期检查已授权应用,并对依赖更新和异常提交保持关注。