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

279 lines
7.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 安全问题修复进度跟踪
## 修复状态图例
- ✅ 已完成
- 🚧 进行中
- ⏸️ 暂缓
- ⏳ 待开始
- ❌ 已回滚
---
## 第一阶段:明确 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 BOM`ef bb bf`
- **影响范围**:Nginx 无法启动,整个系统无法访问
- **解决方案**
1. 使用 `tail -c +4` 删除现有文件的 BOM
2. 修改 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 数据库版本过旧
- **影响范围**:不影响功能,但产生大量警告日志
- **解决方案**
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. **下周计划**
- [ ] 根据第一阶段测试结果决定是否继续
- [ ] 如果继续,开始第二阶段
---
## 备注
- 每次修复后立即更新此文档
- 测试结果详细记录,包括成功和失败的情况
- 遇到问题及时记录到"问题记录"区域
- 回滚操作必须记录原因和影响范围