阶段任务

0 项
  • 理解密码为什么必须加密存储
  • 掌握 bcrypt 的作用
  • 理解 Session 和 JWT 的区别
  • 实现注册、登录、获取当前用户接口
  • 实现鉴权中间件
  • 理解 Access Token、Refresh Token、过期时间和退出登录
  • 理解 401 和 403 的区别
  • 理解用户、角色、权限和 RBAC
  • 理解菜单权限、按钮权限和接口权限的关系
  • 实现头像或文章封面上传
  • 了解本地存储、对象存储、私有文件、签名 URL 的区别
  • 了解 SQL 注入、XSS、CSRF、CORS、限流、敏感信息泄露
  • 理解后台任务、邮件验证码、短信验证码、定时任务等常见业务能力

建议练习

0 项
鉴权

JWT 登录鉴权

实现注册、登录、获取当前用户、需要登录才能访问的接口、仅管理员访问的接口。

产出物一套最小可运行的登录鉴权 API。
上传

上传文章封面

实现 multipart/form-data 文件上传,限制文件大小和类型,并返回可访问 URL。

产出物一个前端可调用的文件上传接口。
鉴权

RBAC 权限演练

实现普通用户只能看自己的数据、管理员可以管理所有数据的最小权限模型。

产出物一组普通用户和管理员访问同一接口的测试记录。
排错

安全 Review 清单

让 AI 按登录、Token、权限、上传、CORS、限流、敏感信息、错误堆栈逐项检查代码。

产出物一份上线前安全检查表。

每日安排

Day 1

注册、登录和密码安全

实现最小登录闭环,并知道密码为什么不能明文保存。

  • 设计 users 表,包含 email、password_hash、role、status
  • 实现注册接口并使用 bcrypt 保存密码哈希
  • 实现登录接口并返回 token
  • 用错误密码、未注册邮箱、禁用用户测试失败响应
当天产出一套注册和登录接口。
Day 2

Token、鉴权中间件和当前用户

让后端能够识别每次请求是谁发起的。

  • 实现解析 Authorization Bearer token 的中间件
  • 实现 GET /me 获取当前用户
  • 处理 token 缺失、过期、伪造、用户不存在的场景
  • 整理前端保存和携带 token 的注意事项
当天产出一个受保护接口和 token 错误处理清单。
Day 3

RBAC 权限模型

区分登录、角色、权限、菜单显示和接口拦截。

  • 设计 user、role、permission 的最小模型
  • 实现管理员才能访问的接口
  • 说明前端菜单权限和后端接口权限的关系
  • 测试普通用户访问管理员接口时返回 403
当天产出一套最小 RBAC 权限示例。
Day 4

文件上传和对象存储

理解 multipart/form-data、文件校验、访问 URL 和对象存储的基本流程。

  • 实现头像或文章封面上传接口
  • 限制文件大小、扩展名和 MIME 类型
  • 返回文件 URL,并记录到用户或文章表
  • 了解阿里云 OSS、腾讯云 COS、S3 的签名上传思路
当天产出一个前端可调用的上传接口。
Day 5

安全和风控基础

把能跑的登录上传功能提升到可上线前检查的水平。

  • 检查 SQL 注入、XSS、CSRF、CORS、限流、错误堆栈泄露
  • 为登录接口增加基础限流或失败次数保护思路
  • 确认密钥、数据库密码、OSS 凭证不进仓库
  • 让 AI 按 OWASP 风格 Review 代码
当天产出一份登录、权限、上传和安全 Review 清单。
Day 6

异步任务和验证码认知

理解邮件、短信、图片处理、通知这些不适合阻塞接口的业务。

  • 设计发送验证码或邮件通知的接口流程
  • 了解队列、定时任务、重试和失败记录
  • 区分同步返回成功和异步任务最终成功
  • 整理哪些后端任务应该放到队列或后台执行
当天产出一份后台任务和验证码流程图。

知识点解释

登录和权限是后端不能只求能跑的部分。这里的错误很容易变成真实安全问题。

JWT

一种携带用户身份信息的 Token,后端用签名验证它是否可信。

前端类比:类似前端保存的一张临时通行证,请求时放在 Authorization header。

bcrypt

密码哈希算法,用来避免数据库泄露时直接暴露明文密码。

前端类比:不是加密后再解密,而是保存不可逆指纹。

RBAC

基于角色的权限控制,用角色连接用户和权限。

前端类比:类似前端根据角色控制菜单和按钮,只是后端必须真正拦截接口。

对象存储

专门保存图片、视频、附件等文件的服务,比如阿里云 OSS。

前端类比:类似静态资源 CDN,但上传、权限和访问地址由后端管理。

Access Token / Refresh Token

Access Token 用于访问接口,生命周期较短;Refresh Token 用于换取新的 Access Token,生命周期较长且更敏感。

前端类比:类似短期通行证和续签凭证,前端要按安全策略保存和刷新。

CSRF

攻击者诱导浏览器带着用户 Cookie 去请求受害网站,常见于 Cookie 鉴权场景。

前端类比:类似用户没点你页面里的按钮,却被别的页面借用了登录态发请求。

限流

限制接口在一定时间内的访问次数,保护登录、验证码、搜索、AI 调用等昂贵接口。

前端类比:类似前端防抖节流,但后端限流用于安全和成本控制。

后台任务

把发邮件、发短信、图片处理、统计计算等耗时操作放到异步队列或定时任务里执行。

前端类比:类似提交表单后先显示处理中,真正耗时工作在后台慢慢完成。
常见坑点
  • 不要明文保存密码
  • 不要只在前端判断权限,后端接口也必须校验
  • 不要把 JWT secret 写进代码仓库
  • 上传文件必须限制大小和类型
  • 生产环境不要直接暴露详细错误堆栈
  • Refresh Token 比 Access Token 更敏感,不能随便长久暴露
  • CORS 配成 * 不等于安全,带 Cookie 和鉴权时尤其要谨慎
  • 上传文件不能只相信前端传来的文件名和 MIME 类型
  • 验证码、登录、AI 调用等接口要考虑限流和成本

AI 协作提示词

JWT 登录示例

请基于 Node.js Express 写一套 JWT 登录鉴权示例。要求注册时使用 bcrypt 加密密码,登录成功后返回 token,写一个鉴权中间件,写一个仅管理员可访问的接口,说明前端应该如何保存和携带 token,并指出这套代码上线前还需要补充哪些安全措施。

安全 Review

请从安全角度 Review 下面的后端代码。重点检查密码存储、权限绕过、SQL 注入、Token 处理、文件上传限制、错误信息泄露、CORS 配置是否存在风险。请按严重程度排序。

权限模型设计

请为下面的后台系统设计最小 RBAC 权限模型。请输出用户、角色、权限、菜单和接口权限之间的关系,给出表结构、接口鉴权流程、前端菜单控制方式,并指出哪些权限必须由后端强制校验。

文件上传方案

请为文章封面上传设计后端方案。要求说明 multipart/form-data、本地存储和对象存储的区别、文件大小和类型限制、文件命名、访问 URL、私有文件签名 URL、上传失败和清理策略,以及前端如何调用。

验收标准

  • 能解释注册、登录、鉴权中间件的流程
  • 能区分认证和授权
  • 能实现一个受保护接口
  • 能实现最小 RBAC 权限校验
  • 能实现带限制的文件上传接口
  • 能让 AI 检查后端代码安全风险

推荐资源

进度数据