跳转至

后端服务

后端开发中,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 可能生成没有权限检查的代码。