- Add React/Vite frontend for login, dashboard, reports, templates, users, settings, AI, speech, and media workflows. - Add NestJS/Prisma/PostgreSQL backend with auth, dashboard stats, reports, templates, users, departments, settings, files, AI, speech, audit logs, and HTML sanitization. - Add Prisma schema, migrations, seed data, persistent app sessions, Docker/Nginx deployment files, and upload volume configuration. - Add Vitest, Playwright, backend integration tests, and project documentation for requirements, design, permissions, API contracts, testing, deployment, security, and progress. - Configure production local fallback switch and remove unused Gemini direct dependency/env wiring.
2.4 KiB
2.4 KiB
安全说明
当前安全边界
本项目当前处于后端化迁移期。登录认证、数据库 Session、工作台统计、报告、报告媒体关系、模板、字段库、模板图片资源、视频/关键帧文件、用户、部门模板授权、系统设置、签名文件、AI 对话和讯飞语音听写已接入后端 Session/API/代理,后端账号密码使用 Argon2 哈希。客户端权限只能防止普通误操作,不能抵御有意绕过。
主要风险
- 开发模式
localStorage.users仍保留兼容缓存和旧演示密码字段;生产构建默认关闭本地回退。 - AI Key 和讯飞语音密钥已由后端代理使用;普通用户读取系统设置时不会返回真实密钥。超级管理员仍可维护全局密钥,应避免把密钥写入源码、日志或文档。
- 旧版本源码中存在默认服务密钥痕迹,应视为已暴露;当前默认值已清空,但生产化前仍需轮换曾经暴露过的第三方密钥。
- 报告和模板 HTML 保存时已做服务端白名单清洗,但仍直接渲染 HTML,需要继续做绕过测试和打印兼容测试。
- 浏览器存储没有审计、备份、权限隔离和加密能力。
- 医疗病历数据属于敏感数据,不能直接用于公网生产。
生产化建议
- 完善服务端权限校验:报告、模板、用户、设置和文件 API 必须全部按角色、部门和作者强校验。
- 增加服务端数据层:视频和关键帧文件已完成第一版 Files API,报告媒体引用已拆到
ReportMedia;字段库和模板图片资源已完成第一版 API。 - 增加文件服务:报告图片、视频和关键帧后续可切换对象存储或院内文件服务;签名、模板图片、视频和关键帧已完成第一版后端文件资源。
- 完善 API 代理:AI 和语音已完成第一版后端代理,后续应补限流、审计、错误分级和第三方调用隔离测试。
- 增强 HTML 清洗:当前报告和模板保存已有第一版白名单过滤,后续需覆盖 AI 返回、导入文件、旧数据迁移和绕过测试。
- 增加审计日志:当前登录、报告/模板/用户/设置/文件修改已有第一版审计,后续补查看日志、打印/导出错误追踪和第三方代理调用摘要;报告导出不要求专门导出审计。
- 增加数据备份与恢复:避免浏览器清理缓存造成业务数据丢失。