docs: add ether-pms Code Review report (2026-04-26)

This commit is contained in:
OpenClaw Bot 2026-04-26 18:45:33 +08:00
parent ff48de8985
commit 0a7dfd06b6
1 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,120 @@
# Code Review 报告ether/ether-pms
> **扫描时间**2026-04-26 18:34
> **分支**main
> **状态**:⚠️ WARNING
---
## 📊 扫描概况
| 项目 | 数值 |
|------|------|
| **扫描文件** | 212 个 Java 文件 |
| **问题总数** | 14 个 |
| **高危critical** | 10 个 |
| **中危high** | 4 个 |
| **低危low** | 0 个 |
---
## 🔥 问题详情
### 1. 硬编码密钥/密码10 处)
| 文件 | 行号 | 说明 | 修复建议 |
|------|------|------|----------|
| `JwtTokenProvider.java` | 175, 194 | JWT 密钥硬编码 | 使用 `@Value("${jwt.secret}")` |
| `PasswordService.java` | 32 | 配置类含密钥 | 移至配置中心 |
| `LoginAttemptService.java` | 23 | KEY_PREFIX 硬编码 | 提取为常量配置 |
| `User.java` | 133, 134 | JPA 注解含 secret | 环境变量注入 |
| `Role.java` | 101, 102 | JPA 注解含 secret | 环境变量注入 |
| `SysConfig.java` | 41 | config_key 字段 | 允许外部覆盖 |
| `MaintenanceTaskServiceImpl.java` | 78 | 关键词数组硬编码 | 提取为配置 |
### 2. 缺少权限校验4 处)
| 文件 | 行号 | 说明 | 修复建议 |
|------|------|------|----------|
| `OwnershipEntityController.java` | 18 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
| `MaintenanceTaskController.java` | 25 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
| `InspectionItemController.java` | 21 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
| `InspectionRecordController.java` | 22 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
| `DataAccessController.java` | 20 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
| `WorkOrderController.java` | 24 | Controller 缺少 `@PreAuthorize` | 添加权限注解 |
---
## 📋 OWASP Top 10 覆盖检查
| 漏洞类型 | 检查状态 | 说明 |
|----------|----------|------|
| A01: 破损访问控制 | ⚠️ 发现 6 处 | Controller 缺少权限校验 |
| A02: 密码学失败 | ⚠️ 发现 10 处 | 密钥硬编码 |
| A03: 注入 | ✅ 未发现 | SQL/XSS/Command 未检测到 |
| A05: 安全配置错误 | ✅ 未发现 | Debug/CORS 未检测到 |
| A06: SSRF | ✅ 未发现 | URL 未校验未检测到 |
| A07: XSS | ✅ 未发现 | 输出未转义未检测到 |
---
## 🎯 修复优先级
### 🔴 高优先级(立即修复)
1. **密钥/密码硬编码**10 处)
- 步骤:替换为 `@Value("${xxx}")` 或配置中心
- 影响:严重安全风险
### 🟠 中优先级(本周修复)
2. **缺少权限校验**6 处 Controller
- 步骤:添加 `@PreAuthorize("hasPermission('xxx')")`
- 影响:未授权访问风险
---
## 🧪 验收标准
修复后需满足:
- ✅ 无明文密钥/密码(全部通过环境变量或配置中心注入)
- ✅ 所有 Controller 方法有 `@PreAuthorize` 注解
- ✅ 重新运行 `skl_code_review.py``status: ok`
---
## 📝 给 Trellis/Qoder 的修复检查提示词
```
请按以下标准修复代码安全问题:
## 高优先级Critical
1. **硬编码密钥/密码10 处)**
- 检查所有包含 secret/password/key 的硬编码字符串
- 用环境变量或 `@Value("${key.name}")` 替换
- 特别关注JwtTokenProvider.java, PasswordService.java, LoginAttemptService.java
2. **缺少权限校验6 处 Controller**
- Controller 类缺少 `@PreAuthorize` 注解
- 添加方法级权限:`@PreAuthorize("hasPermission('xxx')")`
- 特别关注:所有 `*Controller.java`
## 验收标准
✅ 密钥/密码必须来自 `@Value` 或配置中心
✅ 所有 Controller 方法必须有权限注解
✅ 禁止在代码中出现明文 secret/password
✅ 通过 OWASP Top 10 审计
## 修复后重新扫描
运行:
```bash
python3 skl_code_review.py
```
确保 `status: ok`
```
---
*报告生成工具Alpha Code Review Skill (skl-code-review)*
*日期2026-04-26 18:34*