2.5 KiB
2.5 KiB
Phase 4 Summary – 上传隔离与前端提示体系
交付成果
-
上传隔离与安全扫描上线
- 新增
config/uploads.py/modules/upload_security.py,为每个用户创建.upload_quarantine/<username>暂存区。文件经白名单(扩展名、大小)校验后落地隔离目录,再调用 ClamAV (clamdscan) 执行病毒扫描,通过后才复制到项目工作区。 /api/upload与/api/gui/files/upload统一走UploadQuarantineManager,响应中附带scan/sha256/size元数据;扫描失败会返回明确的业务错误码,避免未审核文件进入容器。test/upload_samples/提供白名单与病毒命中的样例(disallowed_payload.exe、eicar_test.com),便于回归和演示。
- 新增
-
前端通知与确认交互重构
static/index.html/static/app.js引入 toast 队列与确认弹窗,替换所有alert/confirm;额度告警、上传状态、 CRUD 操作等都采用统一动画与关闭按钮。- 上传流程的 toast 会实时展示“上传中→扫描→通过/失败”,对于
Eicar-Signature或白名单失败等场景,用户能看到xxx 安全审核未通过、xxx 文件类型不在允许列表中的明确提示。 - 新的动画对单条、多条通知都一致,减少 UI 闪烁。
-
安全文档更新
- 在
doc/security/security_review.md中将“文件上传仅做文件名校验”风险替换为“上传隔离 + 扫描”完成项,描述新的隔离流程与后续优化方向。
- 在
影响评估
- 安全性:上传链路新增隔离区 + 病毒扫描,使“上传即执行”的风险大幅降低,命中文件会被阻断并记录审计日志。
- 体验:用户得到一致的 toast/确认弹窗反馈,上传成功或受阻时的文案清晰易懂;额度告警、文件操作等提示也统一样式。
- 可验证性:提供标准样例和日志记录,方便 QA 与安全审计复现白名单/病毒命中行为。
后续建议
- 在上传响应中保留结构化
error_code,前端根据编码决定提示,无需解析文案;同时扩展 MIME、压缩炸弹深度、沙箱行为等检测。 - 为
upload_guard日志提供 Web 审计面板,展示最近上传、命中签名、处理结果,并支持导出。 - 将同样的隔离/提示体系推广到子 WebApp 与 CLI 上传路径,统一用户体验。
- 进入下一阶段前,可计划数据库化用户/会话数据、完善前端组件化与构建流程,为整体专业化打基础。