Skip to content

Commit 6b1c9d7

Browse files
authored
Merge pull request cmliu#1300 from cmliu/beta2.1
fix: 优化版本信息接口的UUID验证逻辑
2 parents 2a8ce7f + ba9e31b commit 6b1c9d7

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## [2.1.20260611041617] - 2026-06-11 04:16:17
2+
3+
### Change
4+
5+
- 优化 **版本信息接口** 的 UUID 校验逻辑,提高校验安全性。
6+
17
## [2.1.20260609132903] - 2026-06-09 13:29:03
28

39
### Debug

_worker.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const Version = '2026-06-09 13:29:03';
1+
const Version = '2026-06-11 04:16:17';
22
let config_JSON, 反代IP = '', 启用SOCKS5反代 = null, 启用SOCKS5全局反代 = false, 我的SOCKS5账号 = '', parsedSocks5Address = {};
33
let 缓存SOCKS5白名单 = null, 缓存反代IP, 缓存反代解析数组, 缓存反代数组索引 = 0, 启用反代兜底 = true, 调试日志打印 = false;
44
let SOCKS5白名单 = ['*tapecontent.net', '*cloudatacdn.com', '*loadshare.org', '*cdn-centaurus.com', 'scholar.google.com'];
@@ -44,8 +44,19 @@ export default {
4444
if (env.GO2SOCKS5) SOCKS5白名单 = [...new Set(SOCKS5白名单.concat(await 整理成数组(env.GO2SOCKS5)))];
4545
缓存SOCKS5白名单 = SOCKS5白名单;
4646
} else SOCKS5白名单 = 缓存SOCKS5白名单;
47-
if (访问路径 === 'version' && url.searchParams.get('uuid') === userID) {// 版本信息接口
48-
return new Response(JSON.stringify({ Version: Number(String(Version).replace(/\D+/g, '')) }), { status: 200, headers: { 'Content-Type': 'application/json;charset=utf-8' } });
47+
if (访问路径 === 'version') {// 版本信息接口
48+
const 请求UUID = (url.searchParams.get('uuid') || '').toLowerCase();
49+
if (uuidRegex.test(请求UUID)) {
50+
const 目标UUID = String(userID).toLowerCase();
51+
let 请求前8总和 = 0, 目标前8总和 = 0;
52+
for (let i = 0; i < 8; i++) {
53+
const 请求码 = 请求UUID.charCodeAt(i);
54+
请求前8总和 += 请求码 <= 57 ? 请求码 - 48 : 请求码 - 87;
55+
const 目标码 = 目标UUID.charCodeAt(i);
56+
目标前8总和 += 目标码 <= 57 ? 目标码 - 48 : 目标码 - 87;
57+
}
58+
if (请求前8总和 === 目标前8总和 && 请求UUID.slice(-12) === 目标UUID.slice(-12)) return new Response(JSON.stringify({ Version: Number(String(Version).replace(/\D+/g, '')) }), { status: 200, headers: { 'Content-Type': 'application/json;charset=utf-8' } });
59+
}
4960
} else if (管理员密码 && upgradeHeader === 'websocket') {// WebSocket代理
5061
await 反代参数获取(url, userID);
5162
log(`[WebSocket] 命中请求: ${url.pathname}${url.search}`);

0 commit comments

Comments
 (0)