3.8 KiB
3.8 KiB
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 | ✅ 未发现 | 输出未转义未检测到 |
🎯 修复优先级
🔴 高优先级(立即修复)
- 密钥/密码硬编码(10 处)
- 步骤:替换为
@Value("${xxx}")或配置中心 - 影响:严重安全风险
- 步骤:替换为
🟠 中优先级(本周修复)
- 缺少权限校验(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*