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测试编写指南
2.6 KiB
2.6 KiB
安全开发规范
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 安全行为规则
- 不在代码中硬编码任何密钥或凭据
- 不跳过权限检查或认证中间件
- 不信任前端传来的权限声明
- 不在日志中输出敏感数据
- 发现安全漏洞时立即报告,不静默修复
- 不引入已知有安全漏洞的依赖版本