yukaidi
|
54d2a8189c
|
fix(security): 升级 logback 版本 1.5.18 -> 1.5.32 (根 pom.xml)
修复 CVE-2024-12798 等 3 个安全漏洞
|
2026-05-29 03:07:22 +08:00 |
|
yukaidi
|
377bc12cf9
|
fix: Dockerfile 添加非 root 用户运行应用,提升容器安全性
|
2026-05-29 02:55:57 +08:00 |
|
yukaidi
|
da715c8a8f
|
fix: CacheManager 消除双括号初始化,改用标准 HashMap 写法
|
2026-05-29 02:55:32 +08:00 |
|
yukaidi
|
fa4028296f
|
fix: FjTool parseFileList 中 uuid 参数为 null 时的 NPE
|
2026-05-29 02:54:00 +08:00 |
|
yukaidi
|
dc629a3126
|
fix: P115Tool 中 UA 参数为 null 时的 NPE,添加默认 User-Agent
|
2026-05-29 02:53:32 +08:00 |
|
yukaidi
|
746c7ad5b3
|
fix: 替换 e.printStackTrace() 和 System.out.println 为 logger 调用
- HttpProxyVerticle: err.printStackTrace() / e.printStackTrace() -> LOGGER.error()
- RouterHandlerFactory: 5处 printStackTrace() -> LOGGER.error()
- CommonUtil: e.printStackTrace() -> LOGGER.error()
- ReflectionUtil: 新增 LOGGER,3处 printStackTrace() -> LOGGER.error()
- CreateDatabase: e.printStackTrace() -> LOGGER.error()
- URLUtil: 新增 LOGGER,e.printStackTrace() -> LOGGER.error()
- LzTool: e.printStackTrace() -> log.error()
- MkwTool: 3处 System.out.println + 1处 printStackTrace -> log.debug()/log.error()
- PdbTool: e.printStackTrace() -> log.error()
- ParserApi: t.printStackTrace() -> log.error()
- CacheManager: 2处 Throwable::printStackTrace -> LOGGER.error()
- QQTool: 3处 System.out.println -> log.debug()
- FjTool: System.out.println -> log.debug()
|
2026-05-29 02:50:06 +08:00 |
|
yukaidi
|
aef1b9ab11
|
fix: IzToolWithAuth 并发安全 - token/authFlag 改为 volatile,header 副本替代共享修改
|
2026-05-29 02:49:01 +08:00 |
|
yukaidi
|
79c9eb3dda
|
fix: FjTool 并发安全 - token/userId/authFlag 改为 volatile,header0 副本替代共享修改
|
2026-05-29 02:48:13 +08:00 |
|
yukaidi
|
5a08ed68c2
|
fix: IzTool 并发安全 - token/authFlag 改为 volatile,header 副本替代共享修改
|
2026-05-29 02:47:27 +08:00 |
|
yukaidi
|
e5a623c5a8
|
fix: 将 secret.yml 加入 .gitignore 防止敏感配置泄露
|
2026-05-29 02:41:00 +08:00 |
|
yukaidi
|
4586138bf1
|
fix: 修复 AESUtils.getRandomString 使用不安全的 Random,改为 SecureRandom
|
2026-05-29 02:40:32 +08:00 |
|
yukaidi
|
1dddec110e
|
fix: 修复 PasswordUtil.checkPassword 中的时序攻击漏洞,使用 MessageDigest.isEqual()
|
2026-05-29 02:39:31 +08:00 |
|
yukaidi
|
46e9999e4c
|
fix: 修复 CacheManager.updateTotalByField 中 getShareKeyTotal 缺少 onFailure 导致 Promise 永不完成
|
2026-05-29 02:39:05 +08:00 |
|
yukaidi
|
a664ae3a56
|
fix: 修复 ParserApi 中 redirectUrl() 和 viewUrl() 的 Promise 未 complete 问题
|
2026-05-29 02:38:27 +08:00 |
|
yukaidi
|
9bcdcb2cb7
|
fix: 修复 MkwTool 中 set-cookie 为 null 时的 NPE
|
2026-05-29 02:37:22 +08:00 |
|
yukaidi
|
0b8592559a
|
fix: 修复 CommonUtils.getURLParams() 中 fullUrl.getQuery() 返回 null 时的 NPE
|
2026-05-29 02:36:47 +08:00 |
|
yukaidi
|
c0b18be5ab
|
fix: 修复 ShareLinkInfo.getCacheKey() 中 otherParam.get("UA") 可能导致的 NPE
|
2026-05-29 02:36:20 +08:00 |
|
yukaidi
|
46b2eb1ccd
|
修复RouterHandlerFactory异常信息泄露:Future失败和异常捕获时返回通用错误消息,详细异常仅记日志
|
2026-05-29 02:26:12 +08:00 |
|
yukaidi
|
d323376bed
|
修复RateLimiter count++非原子操作:将volatile int改为AtomicInteger,使用incrementAndGet()
|
2026-05-29 02:25:07 +08:00 |
|
yukaidi
|
838c86ae15
|
修复JsParserExecutor DCL模式缺少volatile:EXECUTOR字段添加volatile保证多线程可见性
|
2026-05-29 02:23:17 +08:00 |
|
yukaidi
|
42925c857c
|
修复Playground密码时序攻击和堆栈泄露:使用MessageDigest.isEqual()比较密码,移除返回给客户端的完整堆栈信息
|
2026-05-29 02:22:52 +08:00 |
|
yukaidi
|
ba981d281f
|
修复Token日志泄露:日志中token仅打印前8个字符,其余用...替代
|
2026-05-29 02:21:12 +08:00 |
|
yukaidi
|
4159b884de
|
修复登录用户枚举和异常信息泄露:统一登录失败提示为'用户名或密码错误',隐藏数据库异常详情
|
2026-05-29 02:19:22 +08:00 |
|
yukaidi
|
36b38421e5
|
修复JWT签名验证时序攻击:使用MessageDigest.isEqual()替代String.equals()进行签名比较
|
2026-05-29 02:18:43 +08:00 |
|
yukaidi
|
b77c8a80e9
|
fix(web-service): ParserApi 中 CacheManager/ServerApi 改为 static 避免每次请求重复创建
CacheManager 和 ServerApi 无请求级状态,每次 new 会造成不必要的对象分配,
改为 static final 字段复用;同时修复 viewURL 中内联 new ServerApi()。
|
2026-05-29 02:14:32 +08:00 |
|
yukaidi
|
886dcd039f
|
fix(web-service): DbServiceImpl Thread.sleep 改为 vertx.setTimer 避免阻塞 event loop
sayOk() 中使用 Thread.sleep(4000) 会阻塞 Vert.x event loop 线程,
改为 vertx.setTimer 异步延迟完成 promise。
|
2026-05-29 02:13:42 +08:00 |
|
yukaidi
|
d99885d396
|
fix(core): RouterVerticle Router 从 static final 改为实例字段
Router 声明为 static final 会在类加载时提前创建,
与 Vert.x 实例生命周期不匹配,改为在 start() 中初始化为实例字段。
|
2026-05-29 02:12:37 +08:00 |
|
yukaidi
|
942de9c430
|
fix(core): ConfigRetriever 成功路径也调用 close() 防止资源泄漏
readConfig() 中 onSuccess 回调未关闭 ConfigRetriever,
文件监听器和底层资源无法释放,现在成功和失败路径均调用 close()。
|
2026-05-29 02:11:35 +08:00 |
|
yukaidi
|
ae3ff9ecbb
|
fix(parser): JsPlaygroundLogger 日志列表限制最大 1000 条防止内存泄漏
日志列表 Collections.synchronizedList 无容量限制,长时间运行会无界增长。
新增 addLog() 方法,在添加前检查容量,超过 1000 条时移除最早的条目。
|
2026-05-29 02:09:59 +08:00 |
|
yukaidi
|
bcc4315ea9
|
fix(parser): JsScriptLoader JarFile 改用 try-with-resources 防止文件句柄泄漏
JarFile 在手动 close() 时若中间抛异常会导致文件句柄未关闭,
改为 try-with-resources 确保无论正常或异常都能释放资源。
|
2026-05-29 02:08:50 +08:00 |
|
yukaidi
|
2f7304ab2d
|
fix: Docker 镜像地址改为动态获取仓库名,修复 fork 仓库推送被拒绝
|
2026-05-29 01:47:16 +08:00 |
|
yukaidi
|
0df01ba3d5
|
fix: Deploy配置读取失败时主线程永久阻塞
BUG-05: 配置读取失败时仅调用printStackTrace,未调用LockSupport.unpark()
导致主线程永远阻塞在LockSupport.park()
现在失败时记录错误日志、unpark主线程并退出进程
|
2026-05-29 01:40:38 +08:00 |
|
yukaidi
|
710e454fd0
|
fix: dependency graph 步骤添加 continue-on-error,fork 仓库未启用时不影响 CI
|
2026-05-29 01:40:30 +08:00 |
|
yukaidi
|
c46dfa00a0
|
fix: ReverseProxyVerticle HTTPS默认端口应为443而非80
BUG-03: URL使用https://前缀构造,但默认端口设为80(HTTP)
导致所有未指定端口的HTTPS代理目标连接失败
|
2026-05-29 01:40:05 +08:00 |
|
yukaidi
|
9a3ea05023
|
fix: HttpProxyVerticle代理认证绕过漏洞
SEC-01: 修复三个安全问题:
1. split.length<=1时直接放行请求,现在返回403
2. Base64解码无异常处理,现在捕获IllegalArgumentException返回403
3. 日志中明文记录密码,现在只记录用户名
|
2026-05-29 01:39:31 +08:00 |
|
yukaidi
|
66d7a62d3a
|
fix: ReflectionUtil正则拼写错误boolen应为boolean
BUG-02: boolen拼写错误导致boolean[]类型参数永远不会被识别为基本类型数组
参数绑定失败并抛出RuntimeException
|
2026-05-29 01:38:53 +08:00 |
|
yukaidi
|
f1b6cd3e18
|
fix: HttpProxyConf构造器port字段从未赋值,timeout被重复赋值
BUG-01: this.timeout = DEFAULT_PORT 应为 this.port = DEFAULT_PORT
导致port字段始终为null,代理服务器无法获取正确端口
|
2026-05-29 01:38:24 +08:00 |
|
yukaidi
|
189d1477a8
|
fix: 将 fetch-runtime.js 复制到 test resources,修复测试类加载不到资源文件
CI 运行测试时 JsParserExecutor.loadFetchRuntime() 通过 ClassLoader.getResourceAsStream
找不到 fetch-runtime.js。将文件复制到 parser/src/test/resources/ 确保测试类路径可用。
|
2026-05-29 01:25:32 +08:00 |
|
yukaidi
|
9c3945f45a
|
fix: 修复编译错误,core 模块不能依赖 web-service/parser/core-database
core 模块的 Deploy.java 和 PostExecVerticle.java 直接引用了上层模块的类,
导致编译失败(package does not exist)。
- Deploy.java: 移除对 JDBCPoolInit 和 JsParserExecutor 的显式调用,
vertx.close() 会级联关闭 Vert.x 创建的资源
- PostExecVerticle.java: 移除缓存定时清理逻辑(不能引用 web-service 的 CacheManager)
- CacheManager: 添加 registerPeriodicCleanup() 静态方法,通过 VertxHolder 注册定时任务
- CacheServiceImpl: static 块中调用 CacheManager.registerPeriodicCleanup(),服务加载时自动注册
|
2026-05-29 01:08:15 +08:00 |
|
yukaidi
|
77c7d6c5d6
|
fix: ShutdownHook 中 JDBCPoolInit.instance() 添加 null 检查,防止未初始化时 NPE
安装引导模式下数据库可能未配置,JDBCPoolInit.instance() 为 null,直接调用 close() 会 NPE。
|
2026-05-29 00:53:31 +08:00 |
|
yukaidi
|
ab3009e9cc
|
fix: ShutdownHook 接入 JDBCPoolInit.close() 和 JsParserExecutor.shutdownExecutor()
将已实现但未调用的 close()/shutdownExecutor() 接入 JVM ShutdownHook,显式释放资源。
关闭顺序:vertx.close() → JDBC 连接池 → WorkerExecutor 线程池,确保依赖关系正确。
|
2026-05-29 00:50:45 +08:00 |
|
yukaidi
|
1c2291f9cf
|
Revert "fix(performance): CommonUtil initConfig 改为异步非阻塞读取"
This reverts commit 6dfa770137.
|
2026-05-29 00:37:27 +08:00 |
|
yukaidi
|
efb135ee48
|
Revert "fix(error): URLUtil 异常不再吞没,改为抛出 IllegalArgumentException"
This reverts commit 0dfee8ab22.
|
2026-05-29 00:37:18 +08:00 |
|
yukaidi
|
0699c4a127
|
Revert "fix(memory): ReflectionUtil 添加 SoftReference + TTL 缓存清理"
This reverts commit be1ed3d46d.
|
2026-05-29 00:37:09 +08:00 |
|
yukaidi
|
33cef5f8e1
|
Revert "fix(resource): ReqIpUtil 使用统一 Vertx 单例"
This reverts commit 1fca578c07.
|
2026-05-29 00:36:55 +08:00 |
|
yukaidi
|
32d467b6d9
|
Revert "fix(security): SecurityClassFilter 改为白名单策略"
This reverts commit a83665ac44.
|
2026-05-29 00:35:10 +08:00 |
|
yukaidi
|
6dfa770137
|
fix(performance): CommonUtil initConfig 改为异步非阻塞读取
|
2026-05-29 00:33:27 +08:00 |
|
yukaidi
|
0dfee8ab22
|
fix(error): URLUtil 异常不再吞没,改为抛出 IllegalArgumentException
原代码 catch Exception 后仅打印堆栈,调用方无法感知解析失败。
改为抛出 IllegalArgumentException,让调用方明确知道 URL 解析失败。
|
2026-05-29 00:33:10 +08:00 |
|
yukaidi
|
85fe910f25
|
fix(bug): ParamUtil 修复数组越界问题
原代码当 kv.length == 0 时访问 kv[0] 会抛出异常。
改为跳过空参数,使用 split(=, 2) 限制分割次数。
|
2026-05-29 00:32:56 +08:00 |
|
yukaidi
|
6c60b0116f
|
fix(resource): JDBCPoolInit 实现 AutoCloseable 添加 close() 方法
原代码单例模式无关闭方法,应用退出时数据库连接池无法释放。
改为:
- 实现 AutoCloseable 接口
- 添加 close() 方法关闭连接池
- 关闭后将 pool 置 null 防止重复关闭
|
2026-05-29 00:32:26 +08:00 |
|