--- title: "第八章:安全与用户认证" --- # 第八章:安全与用户认证 ![img](/images/Advanced/mll04qyy-61b0d268ae22452a.jpg) ## 序言 小明的"个人豆瓣"后端跑通了。CRUD 没问题,接口也加了校验和分页,朋友们试用了几天都说不错。他觉得差不多了,是时候把代码推到 GitHub 上,一方面备份,一方面给朋友们看看自己的成果。 `git add .`,`git commit`,`git push`。一气呵成。 十分钟后,他收到一封邮件——来自 OpenAI: > "您的账户在过去 10 分钟内产生了 $127.43 的 API 调用费用。" 小明懵了。他今天根本没用过 AI 功能。他打开 OpenAI 后台一看,API 调用记录在疯狂滚动——每秒几十次,全是陌生的请求。他慌了,赶紧去 GitHub 仓库检查,心凉了半截——`.env` 文件赫然在列,里面的 `OPENAI_API_KEY` 明晃晃地躺在那里,任何人都能看到。 他不知道的是,互联网上有成千上万的自动化爬虫,24 小时不间断地扫描 GitHub 上的每一次提交。它们不看你的代码写得好不好,只找一样东西:密钥。从密钥出现在公开仓库到被盗用,平均只需要 **5 分钟**。小明的密钥在他 `git push` 的那一刻就已经暴露了。 他赶紧删掉了 GitHub 上的 `.env` 文件,又推了一次。但老师傅摇头:"晚了。Git 记录了每一次提交的历史,你删掉的只是最新版本。任何人翻一下历史记录,密钥还在那里。" 小明这才意识到事情的严重性。他花了一个晚上重置所有密钥、清洗 Git 历史、重新配置环境变量。$127 的账单是小事,真正让他后怕的是——如果泄露的不是 OpenAI 的 Key,而是数据库密码呢?用户的邮箱、密码哈希、个人信息,全部暴露。 老师傅看着他忙活完,说了一句:"代码写得再好,密钥一泄露,全白搭。安全这件事,不是功能做完之后的锦上添花,而是从第一行代码开始就要考虑的。" --- 这件事给小明上了一课。他开始意识到,做一个"能用"的应用和做一个"安全"的应用之间,还有很长的路。 本章从小明的这次教训出发,带你建立完整的安全意识: - **密钥怎么管**——环境变量、`.gitignore`、云端配置,让密钥永远不出现在代码里 - **用户怎么认**——注册登录背后的原理,以及为什么要用成熟的认证库而不是自己写 - **路由怎么守**——Middleware、CORS、权限控制,确保每个请求都经过检查 - **出了问题怎么查**——从"配置没生效"到"密钥已泄露"的排查手册 - **更深的威胁怎么防**——SQL 注入、XSS、CSRF,以及 AI 应用特有的安全问题 这些内容不需要你一次全学完。8.0 先动手跑一个用户系统,建立直觉;后面的章节在你遇到具体问题时回来查就行。 ## 本章小节 | 小节 | 内容 | |------|------| | [8.0 用户系统快速示例](./00-user-system-example.md) | 用 Better Auth 跑通注册、登录、受保护页面,建立认证直觉 | | [8.1 密钥管理与环境变量](./01-env-and-secrets.md) | `.env`、`.gitignore`、Server vs Client 边界、云端配置 | | [8.2 认证方式与方案选择](./02-auth-methods.md) | Session vs Token、OAuth、Passkeys、Better Auth vs 其他方案 | | [8.3 路由保护与权限控制](./03-route-protection.md) | Middleware、CORS、页面级 vs 接口级保护、角色权限 | | [8.4 安全检查与问题排查](./04-security-checklist.md) | 开发前/中/后清单 + 症状→原因→解决诊断手册 | | [8.5 进阶安全防护](./05-advanced-security.md) | SQL 注入/XSS/CSRF 防护、AI 应用安全、依赖审计 | --- **上一章**:[第七章:后端API开发](../07-backend-api/index.md) **下一章**:[第九章:功能测试流程与自动化脚本](../09-testing-automation/index.md)