Files
insar-management-system-v2/docs/archive/SECURITY_FIX_PROGRESS.md
T

7.0 KiB
Raw Blame History

安全问题修复进度跟踪

修复状态图例

  • 已完成
  • 🚧 进行中
  • ⏸️ 暂缓
  • 待开始
  • 已回滚

第一阶段:明确 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%)


问题记录

问题 #1Nginx 启动失败 - UTF-8 BOM 问题

  • 发现时间2026-03-04
  • 问题描述Nginx 启动失败,错误信息 unknown directive "worker_processes",发现 nginx.conf 文件包含 UTF-8 BOMef bb bf
  • 影响范围:Nginx 无法启动,整个系统无法访问
  • 解决方案
    1. 使用 tail -c +4 删除现有文件的 BOM
    2. 修改 PowerShell 脚本使用 [System.IO.File]::WriteAllText() 确保写入时无 BOM
  • 状态 已解决

问题 #2PROJ 数据库版本冲突

  • 发现时间2026-03-05
  • 问题描述:扫描 D-InSAR 结果时出现 PROJ 警告 DATABASE.LAYOUT.VERSION.MINOR = 2 whereas >= 3 is expectedPostgreSQL 自带的 PROJ 数据库版本过旧
  • 影响范围:不影响功能,但产生大量警告日志
  • 解决方案
    1. run_backend.py 中自动检测并设置 PROJ_LIB 环境变量
    2. 指向 GDAL 自带的新版 PROJ 数据库
  • 状态 已修复,待测试验证

问题 #3:扫描任务时前端未锁定

  • 发现时间2026-03-05
  • 问题描述:D-InSAR 结果扫描任务运行时前端没有锁定
  • 影响范围:用户可能在扫描过程中进行其他操作,导致数据不一致
  • 可能原因
    1. 扫描任务执行太快(< 3 秒),前端轮询间隔(3 秒)来不及捕获
    2. 任务状态更新有延迟
  • 解决方案:待确认是否需要修复(可能是正常行为)
  • 状态 待分析

回滚记录

回滚 #1

  • 回滚时间-
  • 回滚内容-
  • 回滚原因-
  • 影响范围-

下一步行动

  1. 立即行动

    • 测试 1.1 ENVI 主流程返回值修复
    • 如果测试通过,继续修复 1.2 和 1.3
  2. 本周计划

    • 完成第一阶段所有修复
    • 充分测试第一阶段
    • 提交第一阶段代码
  3. 下周计划

    • 根据第一阶段测试结果决定是否继续
    • 如果继续,开始第二阶段

备注

  • 每次修复后立即更新此文档
  • 测试结果详细记录,包括成功和失败的情况
  • 遇到问题及时记录到"问题记录"区域
  • 回滚操作必须记录原因和影响范围