oh-my-muse/docs/dev-baseline/global/05-安全开发规范.md
zizi 7277b9c558 fix(baseline): 修复管理基线文档一致性问题并补充安全/日志规范
Critical修复:
- CI配置MySQL→PostgreSQL对齐架构决策
- 错误码格式统一为分段格式(系统-模块-分类-序号)
- 覆盖率指标统一(Domain 90%/Application 80%/新增 90%)

Major修复:
- 分支策略统一为trunk-based,去掉develop分支
- muse-studio部署描述修正为Vite SPA静态部署
- muse-studio提交类型统一为英文前缀
- API路径统一为/app-api,端口对齐48080
- DROP COLUMN措辞修正为条件性禁止
- 增加规范优先级声明

新增文档:
- 05-安全开发规范.md(认证授权/输入校验/AI安全/审计)
- 06-日志与可观测性规范.md(日志级别/结构化/链路追踪/监控)
- muse-admin测试编写指南
2026-05-24 11:36:22 +08:00

2.6 KiB
Raw Blame History

安全开发规范

1. 认证与授权

  • 所有 API 必须经过认证(除明确标注的公开接口)
  • 权限校验在 Application 层执行,不依赖前端隐藏
  • 管理员操作和普通用户操作走不同 API 前缀(/admin-api vs /app-api)
  • AI runtime 不能自授权(包级隔离 + ArchUnit 强制)

2. 输入校验

  • 所有外部输入必须校验(请求参数、文件上传、WebSocket 消息)
  • 使用框架提供的校验注解(@Valid、@NotNull 等),不手写正则
  • 文件上传:校验类型、大小、内容(不只看扩展名)
  • SQL 参数化查询,禁止字符串拼接

3. 数据保护

  • 敏感字段(密码、token、密钥)不出现在日志、响应、错误信息中
  • 数据库中密码使用 BCrypt 加密存储
  • API 响应中脱敏:手机号中间 4 位、邮箱 @ 前部分、身份证中间段
  • 用户数据隔离:查询必须带 tenant_id / user_id 条件

4. 密钥管理

  • 禁止在代码中硬编码密钥、token、密码
  • 开发环境使用 .env.local(已 gitignore)
  • 生产环境使用环境变量或密钥管理服务
  • API Key 定期轮换,支持多 key 并存过渡

5. AI 特有安全

  • Prompt Injection 防护:用户输入与系统 prompt 严格分离
  • AI 生成内容标记来源(source_version),不伪装为用户原创
  • AI runtime 权限信封(Permission Envelope)由 grant 包签发,runtime 只读
  • 保护节点(Protection Node)不可被 AI 替换或修改

6. 前端安全

  • XSS 防护:使用框架自动转义,富文本使用白名单过滤
  • CSRF:使用 token 机制
  • 敏感操作(删除、发布、支付)需要二次确认
  • 本地存储(IndexedDB/localStorage)不存储敏感信息

7. 审计日志

  • 所有管理员操作必须记录审计日志
  • 审计日志包含:who(操作人)、what(操作内容)、when(时间)、where(IP/设备)、result(结果)
  • 审计日志不可修改、不可删除
  • 敏感操作(权限变更、数据删除、配置发布)额外记录变更前后值

8. 依赖安全

  • 使用固定版本号,不使用 ^ 或 ~ 范围
  • 定期检查依赖漏洞(npm audit / mvn dependency-check)
  • 新增依赖需评估:维护活跃度、已知漏洞、许可证兼容性
  • 禁止引入来源不明或名称可疑的包

9. Agent 安全行为规则

  • 不在代码中硬编码任何密钥或凭据
  • 不跳过权限检查或认证中间件
  • 不信任前端传来的权限声明
  • 不在日志中输出敏感数据
  • 发现安全漏洞时立即报告,不静默修复
  • 不引入已知有安全漏洞的依赖版本