漏洞库 › 漏洞详情页 ›「加入扫描」——从选品入车到扫描执行的端到端原型与流程。
从漏洞库详情页到结果消费的完整链路。注意 A→B 与 B→C 之间为纯前端本地操作,网络与写库从 C 步骤开始。
| 阶段 | 系统行为 | 数据落点 |
|---|---|---|
| B 加入草稿 | 无则新建草稿 `POC 扫描` → 按 id 去重追加 PoC → 持久化 → Toast | 浏览器 localStorage |
| D 起扫 | 权限校验 → 目标解析 → PoC 解析(poc_ids)→ 登记任务 → 资产沉淀 → 起子进程 | 内存 TaskManager / scan_task / 资产表 |
| E 执行回填 | SSE 推送进度与命中;终态落最终快照 | result 表 / scan_task 表 |
F1 加入草稿 → F2 草稿管理 → F3 发起扫描 → F4 执行回填 → F5 结果消费。
poc.id 去重写入 pocs[]localStorage["afrog_scan_tasks"](增强:失败降级提示)已加入扫描:<名称>(增强:带「去起扫」行动点)交互约束:不弹确认框、不跳页、不置灰、无 loading。
点击「加入扫描」后:无弹窗、无跳转、按钮不变;仅出现上方 Toast,本地草稿新增该 PoC。
草稿在上述面板确认后,点击「开始扫描」触发后端。
按发生阶段分组;标注现状处理方式与增强目标。
| 编号 | 异常 | 处理逻辑 | 归属 |
|---|---|---|---|
| E1 | 未登录 / 令牌过期 | 调 /api/* 返回 401 → 前端拦截跳登录(提示「登录过期,请重新登录」) | 现状 |
| E2 | 无活跃草稿 | 自动新建草稿并置为活跃(对用户透明) | 现状 |
| E3 | 重复加入同一 PoC | 按 id 去重,不重复追加(增强:提示「已在草稿中」) | 现状 增强 |
| E4 | 草稿含失效 PoC | 后端静默跳过 → 增强:起扫前校验并回显失效清单 | 增强 |
| E5 | 无有效目标 | 返回 400 缺少有效扫描目标,表单就地报错 | 现状 |
| E6 | 项目无目标 | 返回 400 该项目没有有效目标 | 现状 |
| E7 | enable_stream 非 true | 返回 400(正常前端不会触发) | 现状 |
| E8 | 存储写入失败(隐私模式/配额) | 当前静默吞掉 → 增强:降级提示「仅本次会话有效」 | 增强 |
| E9 | 远程执行节点失联 | 任务标「节点失联」,保留最后状态,恢复后自动对账 | 现状 |
| E10 | 服务重启 | 内存任务丢失;scan_task 历史快照(上限 200)仍可查 | 现状 |
| E11 | 加入时详情未加载 | 忽略点击(无副作用)→ 增强:按钮置灰 | 增强 |
进入 starting 后再加入 PoC 只改本地记录,不影响已提交的扫描。
前端可见性仅作引导,以服务端校验为准。令牌角色仅 curated|free 两档。
| 操作 | 前端可见性 | 后端校验 |
|---|---|---|
| 浏览漏洞库 / 详情 | 全部登录用户 | jwtAuthMiddleware |
| 加入扫描(本地) | 全部登录用户 | 无网络请求,不涉及权限 |
| 开始扫描 | 全部登录用户 | jwtAuthMiddleware |
| 复测对比 / 计划扫描 / 台账 / 通知 / 集群 / 导出 | 会员可见(含上锁预览) | requireCurated |