安全说明

内置的安全基线

能力实现位置
---------
密码哈希scrypt(N=16384, r=8, p=1)src/lib/auth.js
会话防篡改HMAC-SHA256 签名 cookiesrc/lib/auth.js
会话防回放服务端只存 token 哈希src/server.js
CSRF双提交 cookie + 请求头校验src/server.js
速率限制每 IP 令牌桶(登录接口更严格)src/lib/util.js
防时序枚举登录失败也执行一次哈希src/server.js
XSS所有动态输出经过 HTML 转义src/lib/util.js
路径穿越静态文件路径归一化校验src/server.js
安全响应头CSP / nosniff / frame-denysrc/server.js
请求体限制1MB 上限,超限断开src/config.js

你上线前还需要做的

  1. HTTPS 全站:用 Caddy 自动证书,一分钟搞定;
  2. 强密钥:SESSION_SECRET 用 64 位随机串(openssl rand -hex 32);
  3. 备份:data/db.json 每天备份到异地(脚本示例见 deploy/backup.sh);
  4. 关闭注册:灰度/内测期可在管理后台一键关闭注册;
  5. 邀请码:设置 INVITE_CODE 环境变量,注册需填写邀请码。

已知边界(诚实清单)

  • 进程内限流:单机有效,多实例部署需外部方案(如 nginx limit_req);
  • JSON 库:单机写入,不支持多实例共享;
  • 无邮箱验证/找回密码流程:接入邮件服务前,请勿承载高价值账号体系。

把边界写清楚,是为了让你知道「什么场景不要硬上」。对 99% 的独立开发者在单服务器上的第一个产品,这套基线已经够用。