认证
规则
- 基于会话的 Web 应用认证;仅 API 到 API 的通信使用 JWT
- 路由保护中间件 —— 渲染前检查会话
- 社交登录提供商:最低要求 Google + GitHub;根据受众添加更多
- 魔法链接作为密码替代方案 —— 更简单,更安全
- 基于角色的访问控制:使用
user.role字段配合中间件检查 - 所有变更端点必须启用 CSRF 保护
- 安全 Cookie 设置:
httpOnly、secure、sameSite: "lax"、合理的maxAge - 刷新令牌轮换 —— 不要让令牌永久有效
避免
- 将令牌存储在 localStorage 中 —— 应使用 httpOnly Cookie
- 自行实现密码哈希 —— 应通过认证库使用 bcrypt/argon2
- 仅依赖客户端角色检查而不进行服务器端验证
- 表单提交缺少 CSRF 保护