Du kannst nicht mehr als 25 Themen auswählen
Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
项目问题改进报告
一、安全问题(Critical / High)
1. 多租户隔离完全失效 [CRITICAL]
- 文件:
yubb-framework/src/main/java/com/yubb/framework/handler/YubbTenantLineHandler.java
- 问题: 整个 TenantLineHandler 实现被注释掉,多租户查询不过滤
tenant_id,租户间数据互通
- 修复: 取消注释并实现 TenantLineHandler
2. SQL 注入风险 [CRITICAL]
- 文件:
yubb-system/src/main/java/com/yubb/platform/mapper/DynamicSqlProvider.java
- 问题: 多处直接拼接用户输入到 SQL 字符串(
insertDynamic、updateDynamic、insertdevices、updatedevicesshuju 等方法)
- 修复: 改用参数化查询,禁止字符串拼接 SQL
3. 硬编码密钥 [HIGH]
- 文件:
yubb-admin/src/main/resources/application.yml
- MinIO 账号密码(第 44-45 行)
- 阿里云 OSS AK/SK(第 107-109 行)
- 微信 appId/secret(第 121-122 行)
- 文件:
yubb-admin/src/main/java/com/yubb/web/controller/config/MqttConfig.java(第 26 行)
- 文件:
yubb-system/src/main/java/com/yubb/platform/service/impl/TDengineMysqlconnect.java(多处)
- 修复: 所有密钥移至环境变量或 Vault,代码中禁止明文存储
4. Shiro Cookie 未设置 HttpOnly [HIGH]
- 文件:
yubb-admin/src/main/resources/application.yml(第 92 行)
- 问题:
HttpOnly: false 导致 session cookie 可被 JS 窃取
- 修复: 改为
true
5. XSS 防护关闭 [HIGH]
- 文件:
yubb-admin/src/main/resources/application.yml(第 99 行)
- 问题:
xss.enabled: false
- 修复: 生产环境开启
二、代码质量问题
6. 硬编码管理后台绕过 [CRITICAL]
- 文件:
yubb-admin/src/main/java/com/yubb/web/controller/platform/SysPowerController.java(第 82 行)
- 问题:
if (stationId.equals("54634575686785679498")) 硬编码 admin ID,可跳过权限
- 修复: 移除 hardcoded bypass,改为基于角色的权限校验
7. 大量 System.out.println [MEDIUM]
- 问题: 30+ 处
System.out.println,分布在 DynamicSqlProvider 等生产路径
- 修复: 替换为日志框架(logback/slf4j)
8. NullPointerException 风险 [MEDIUM]
- 文件:
SysPowerController.java(第 79-82 行)
- 问题:
stationId 可能为 null 时仍调用 .equals()
- 修复: 使用
Objects.equals() 或先判空
9. 控制器职责过大(God Class) [MEDIUM]
- 文件:
yubb-admin/src/main/java/com/yubb/web/controller/platform/SysSingleController.java
- 问题: 超过 750 行,混杂 Web 层、业务逻辑、数据格式化
- 修复: 拆分为 Controller + Service 层
10. 控制器间直接 Autowire [LOW]
- 问题:
SysSingleController 直接 Autowire shujuController,违反分层原则
- 修复: 通过 Service 层间接调用
三、技术债
11. Spring Boot 2.5.6 已 EOL [MEDIUM]
- 文件:
pom.xml(第 45 行)
- 问题: 2021 年 7 月发布,已无安全补丁,建议升级至 2.7.x 或 3.x
12. pom.xml 版本不一致 [MEDIUM]
- mybatis-plus:
dependencyManagement 声明 3.5.3,实际使用 3.4.3.4(第 236、266 行)
- druid:properties 声明 1.2.4,实际使用 1.1.17(第 23、322 行)
- 修复: 统一版本
13. 无单元测试 [MEDIUM]
- 问题: 零测试文件,生产 SaaS 系统无任何保障
- 修复: 补充 Controller、Service 层测试
14. Maven 仓库使用 HTTP [LOW]
- 文件:
pom.xml(第 426-428、436-438 行)
- 问题:
http://maven.aliyun.com 非 HTTPS,存在中间人攻击风险
- 修复: 改为 HTTPS
四、数据库问题
15. tenant_id 列无索引 [HIGH]
- 文件:
sql/yb-20210820.sql
- 问题:
tenant_id 列未建索引,JOIN 和 WHERE 过滤时全表扫描
- 修复: 对所有租户表的
tenant_id 建索引
16. 租户过滤配置重复 [LOW]
- 文件:
yubb-admin/src/main/resources/application.yml(第 150-151 行)
- 问题:
platform_role_menu 和 platform_user_role 重复列出
- 修复: 去重
五、优先级汇总
| 优先级 |
问题 |
估计工时 |
| P0 |
多租户隔离失效 |
中 |
| P0 |
SQL 注入(DynamicSqlProvider) |
中 |
| P0 |
硬编码密钥移除 |
小 |
| P1 |
管理后台绕过漏洞 |
小 |
| P1 |
XSS 防护开启 |
小 |
| P1 |
HttpOnly Cookie 开启 |
小 |
| P1 |
tenant_id 建索引 |
中 |
| P2 |
Spring Boot 升级 |
大 |
| P2 |
版本统一 |
小 |
| P2 |
单元测试覆盖 |
大 |
| P3 |
System.out.println 替换 |
中 |
| P3 |
SysSingleController 重构 |
中 |
| P3 |
Maven HTTP → HTTPS |
小 |