7.0 KiB
7.0 KiB
安全问题修复进度跟踪
修复状态图例
- ✅ 已完成
- 🚧 进行中
- ⏸️ 暂缓
- ⏳ 待开始
- ❌ 已回滚
第一阶段:明确 Bug 修复
1.1 ENVI 主流程返回值缺失
- 状态:✅ 已完成
- 修改文件:
backend/app/services/envi_service.py:1630 - 修改内容:添加
return record - 提交时间:2026-03-04
- 测试状态:⏳ 待测试
测试清单:
- 运行完整的 D-InSAR 工作流(dinsar_custom)
- 检查任务状态是否为 SUCCESS
- 检查日志是否包含
workflow=dinsar_custom duration=XXXs - 验证前端显示是否正常
测试结果:
待填写...
1.2 失败计数重复累加
- 状态:✅ 已完成
- 修改文件:
backend/app/services/envi_service.py:1717, 1726 - 修改内容:删除重复的
failed += 1(两处) - 提交时间:2026-03-04
- 测试状态:⏳ 待测试
测试清单:
- 运行
extract_disp_results功能 - 故意触发失败(如权限问题)
- 验证
failed计数是否准确
测试结果:
待填写...
1.3 PowerShell 编码问题
- 状态:✅ 已完成(已增强)
- 修改文件:
scripts/start_app.ps1:388 - 修改内容:使用 UTF-8 无 BOM 编码写入
- 提交时间:2026-03-04
- 测试状态:✅ 已验证
额外修复:
- 发现
nginx.conf文件包含 UTF-8 BOM,导致 Nginx 启动失败 - 已删除 BOM(使用
tail -c +4) - 修改脚本使用
[System.IO.File]::WriteAllText()确保无 BOM
测试清单:
- 在 PowerShell 5 环境运行启动脚本
- 检查 nginx.conf 文件编码
- 验证 Nginx 是否正常启动
测试结果:
待填写...
第一阶段总结:
- 完成度:3/3 (100%) ✅
- 完成时间:2026-03-04
- 遇到的问题:无
- 回滚记录:无
- 状态:代码修改已完成,等待测试验证
第二阶段:防御性增强
2.1 AOI token 容量上限
- 状态:⏳ 待开始
- 修改文件:
backend/app/routers/dependencies.py - 修改内容:添加
AOI_TOKEN_MAX_STORE_SIZE配置和容量检查 - 提交时间:-
- 测试状态:-
测试清单:
- 创建 1000+ 个 AOI token
- 验证内存占用是否稳定
- 检查日志是否有清理记录
- 验证被清理的 token 无法使用
- 验证新 token 仍可用
测试结果:
待填写...
2.2 AOI 解析异常处理
- 状态:⏳ 待开始
- 修改文件:
backend/app/routers/dependencies.py - 修改内容:添加统一异常处理(400 vs 500)
- 提交时间:-
- 测试状态:-
测试清单:
- 上传无效 GeoJSON 文件
- 验证返回 400 而非 500
- 验证错误消息清晰
- 验证前端能正确处理
测试结果:
待填写...
2.3 路径归属判断优化
- 状态:⏳ 待开始
- 修改文件:
backend/app/services/data_service.py:530 - 修改内容:使用
is_subpath替代startswith - 提交时间:-
- 测试状态:-
测试清单:
- 创建
MONITOR_RADAR_DIRS_backup目录 - 放入测试文件
- 运行数据扫描
- 验证 backup 目录文件不被误判
测试结果:
待填写...
第二阶段总结:
- 完成度:0/3 (0%)
- 预计完成时间:-
- 遇到的问题:-
- 回滚记录:无
第三阶段:安全加固
3.1 解包安全校验增强
- 状态:⏳ 待开始
- 修改文件:
scripts/unpack_archives.py - 修改内容:添加符号链接检查,使用逐个提取
- 提交时间:-
- 测试状态:-
测试清单:
- 创建包含符号链接的 tar 文件
- 验证被拒绝解包
- 创建正常 tar 文件
- 验证正常解包
- 对比解包性能
测试结果:
待填写...
第三阶段总结:
- 完成度:0/1 (0%)
- 预计完成时间:-
- 遇到的问题:-
- 回滚记录:无
第四阶段:权限重构
4.1 只读用户权限控制
- 状态:⏸️ 暂缓
- 原因:需要明确需求和前端配合
- 待讨论问题:
- 系统中是否有只读用户?
- 只读用户的使用场景?
- 是否可以接受只读用户无法查看预览图?
- 是否需要前端配合?
总体进度
| 阶段 | 状态 | 完成度 | 预计时间 | 实际时间 |
|---|---|---|---|---|
| 第一阶段 | ✅ 已完成 | 3/3 (100%) | 1 天 | 2026-03-04 |
| 第二阶段 | ⏳ 待开始 | 0/3 (0%) | 2-3 天 | - |
| 第三阶段 | ⏳ 待开始 | 0/1 (0%) | 2-3 天 | - |
| 第四阶段 | ⏸️ 暂缓 | - | 待定 | - |
总完成度:3/7 (43%)
问题记录
问题 #1:Nginx 启动失败 - UTF-8 BOM 问题
- 发现时间:2026-03-04
- 问题描述:Nginx 启动失败,错误信息
unknown directive "worker_processes",发现nginx.conf文件包含 UTF-8 BOM(ef bb bf) - 影响范围:Nginx 无法启动,整个系统无法访问
- 解决方案:
- 使用
tail -c +4删除现有文件的 BOM - 修改 PowerShell 脚本使用
[System.IO.File]::WriteAllText()确保写入时无 BOM
- 使用
- 状态:✅ 已解决
问题 #2:PROJ 数据库版本冲突
- 发现时间:2026-03-05
- 问题描述:扫描 D-InSAR 结果时出现 PROJ 警告
DATABASE.LAYOUT.VERSION.MINOR = 2 whereas >= 3 is expected,PostgreSQL 自带的 PROJ 数据库版本过旧 - 影响范围:不影响功能,但产生大量警告日志
- 解决方案:
- 在
run_backend.py中自动检测并设置PROJ_LIB环境变量 - 指向 GDAL 自带的新版 PROJ 数据库
- 在
- 状态:✅ 已修复,待测试验证
问题 #3:扫描任务时前端未锁定
- 发现时间:2026-03-05
- 问题描述:D-InSAR 结果扫描任务运行时前端没有锁定
- 影响范围:用户可能在扫描过程中进行其他操作,导致数据不一致
- 可能原因:
- 扫描任务执行太快(< 3 秒),前端轮询间隔(3 秒)来不及捕获
- 任务状态更新有延迟
- 解决方案:待确认是否需要修复(可能是正常行为)
- 状态:⏳ 待分析
回滚记录
回滚 #1
- 回滚时间:-
- 回滚内容:-
- 回滚原因:-
- 影响范围:-
下一步行动
-
立即行动:
- 测试 1.1 ENVI 主流程返回值修复
- 如果测试通过,继续修复 1.2 和 1.3
-
本周计划:
- 完成第一阶段所有修复
- 充分测试第一阶段
- 提交第一阶段代码
-
下周计划:
- 根据第一阶段测试结果决定是否继续
- 如果继续,开始第二阶段
备注
- 每次修复后立即更新此文档
- 测试结果详细记录,包括成功和失败的情况
- 遇到问题及时记录到"问题记录"区域
- 回滚操作必须记录原因和影响范围