| # | 问题 | 文件 | 说明 |
|---|---|---|---|
| P0 | 多租户隔离完全失效 | yubb-framework/.../YubbTenantLineHandler.java |
TenantLineHandler 实现被注释,租户间数据互通 |
| P0 | SQL 注入风险 | yubb-system/.../DynamicSqlProvider.java |
直接拼接用户输入到 SQL(insertDynamic、updateDynamic 等方法) |
| P0 | 硬编码密钥 | 多文件 | MinIO 密码、阿里云 AK/SK、微信 appId/secret 等明文存储 |
| # | 问题 | 文件 | 说明 |
|---|---|---|---|
| P1 | 管理后台绕过 | yubb-admin/.../SysPowerController.java:82 |
硬编码 admin ID,可跳过权限校验 |
| P1 | XSS 防护关闭 | yubb-admin/.../application.yml:99 |
xss.enabled: false |
| P1 | Shiro Cookie 未设置 HttpOnly | yubb-admin/.../application.yml:92 |
HttpOnly: false,session cookie 可被 JS 窃取 |
| P1 | tenant_id 列无索引 | sql/yb-20210820.sql |
JOIN 和 WHERE 过滤时全表扫描 |
| # | 问题 | 文件 | 说明 |
|---|---|---|---|
| P2 | Spring Boot 2.5.6 已 EOL | pom.xml:45 |
2021 年发布,无安全补丁,建议升级至 2.7.x 或 3.x |
| P2 | pom.xml 版本不一致 | pom.xml |
mybatis-plus(声明 3.5.3 / 实际 3.4.3.4)、druid(声明 1.2.4 / 实际 1.1.17) |
| P2 | 无单元测试 | — | 零测试文件,生产系统无保障 |
| # | 问题 | 文件 | 说明 |
|---|---|---|---|
| P3 | 大量 System.out.println | 多处 | 30+ 处,分布在生产路径,应替换为日志框架 |
| P3 | SysSingleController 职责过大 | yubb-admin/.../SysSingleController.java |
超过 750 行,混杂 Web 层/业务逻辑/数据格式化 |
| P3 | Controller 间直接 Autowire | SysSingleController |
直接 Autowire shujuController,违反分层原则 |
| P3 | NullPointerException 风险 | SysPowerController.java:79-82 |
stationId 为 null 时仍调用 .equals() |
| P3 | Maven 仓库使用 HTTP | pom.xml:426-428,436-438 |
http://maven.aliyun.com 非 HTTPS,存在中间人攻击风险 |
| P3 | tenant 过滤配置重复 | yubb-admin/.../application.yml:150-151 |
platform_role_menu 和 platform_user_role 重复列出 |
| 优先级 | 问题数 | 关键项 |
|---|---|---|
| P0 | 3 | 多租户隔离失效、SQL 注入、硬编码密钥 |
| P1 | 4 | admin 绕过、XSS 关闭、HttpOnly 未设置、tenant_id 无索引 |
| P2 | 3 | Spring Boot EOL、版本不一致、零测试 |
| P3 | 6 | System.out、God Controller、HTTP 仓库 等 |