后端服务¶
后端开发中,Vibe Coding 在 API 实现、业务逻辑和数据库操作上效果突出,但安全敏感逻辑需要额外审查。
高效场景¶
REST API 实现¶
背景:FastAPI 项目,统一响应格式 { data, error, code },
参数验证使用 Pydantic v2,认证使用 JWT Bearer Token。
目标:实现 GET /api/v1/orders 接口(订单列表)
参数:
- page: int = 1(页码)
- page_size: int = 20(每页数量,最大 100)
- status: Optional[str](过滤状态)
- user_id 从 JWT token 中读取
返回:{ data: { items: Order[], total: int, page: int } }
范围:只修改 src/routers/orders.py
不改动:src/models/、src/auth/
约束:
- 只返回当前用户的订单(user_id 过滤)
- page_size 超过 100 时返回 400 错误
- 使用现有的 get_db() 依赖注入
验收:pytest tests/test_orders.py -v 全部通过
数据库查询优化¶
问题:以下查询在数据量超过 10 万时响应超过 3 秒
慢查询日志:[附上 EXPLAIN ANALYZE 结果]
当前实现:[附上 ORM 代码]
目标:将 P99 响应时间降到 200ms 以内
约束:
- 不改变接口返回格式
- 不引入缓存层(本次只优化查询)
- 索引变更需要提供迁移文件
验收:在测试数据集(10 万条)上 P99 < 200ms
认证授权¶
安全敏感区域
认证授权逻辑必须经过人工深度审查,不能仅依赖 AI 生成结果。
背景:项目使用 JWT + Refresh Token 方案,
现有实现在 src/auth/(附上文件)
目标:为现有认证系统添加 MFA(TOTP)支持
范围:只在 src/auth/mfa.py 中实现 TOTP 逻辑
不改动:现有的 JWT 签发和验证逻辑
约束:
- 使用 pyotp 库(已在 requirements.txt 中)
- TOTP 密钥必须加密存储,不能明文入库
- 失败尝试超过 5 次需要锁定账户
验收:
- pytest tests/test_mfa.py 通过
- 人工审查:密钥存储方式、锁定逻辑
后端特有的上下文要素¶
| 要素 | 说明 |
|---|---|
| 数据库 Schema | 相关表的完整定义 |
| 认证方案 | JWT、Session、OAuth 的具体实现 |
| 错误处理约定 | 统一的错误码和响应格式 |
| 中间件列表 | 日志、限流、认证等中间件的执行顺序 |
| 环境变量 | 配置项的名称(不是值) |
安全审查清单¶
后端代码在合并前必须检查:
- SQL 注入:所有查询使用参数化或 ORM
- 权限检查:每个接口验证用户有权访问目标资源
- 输入验证:所有外部输入经过类型和范围验证
- 敏感数据:密码哈希、密钥加密、日志脱敏
- 速率限制:公开接口有频率限制
常见陷阱¶
陷阱:让 AI 设计数据库 Schema
Schema 设计涉及业务语义,AI 容易做出错误假设。先自己设计 Schema,再让 AI 生成迁移文件。
陷阱:跳过权限验证
在任务简报中明确要求"验证用户只能访问自己的数据",否则 AI 可能生成没有权限检查的代码。