加固-05(P0-04): api GetAppInfo 不再明文下发 connectkey/decryptkey

api/Communication.php 的 GetAppInfo 模块原实现把 sq_apps 全行
(含 connectkey/decryptkey 明文)返回给 SDK。这两个密钥是服务端与
SDK 通信的签名/解密密钥(第21行 new communication($appinfo['connectkey'],
$appinfo['decryptkey'])),任何持有合法 token 的调用方或其抓包者拿到
明文密钥后,可伪造该应用的任意 API 请求/解密响应。

修复:GetAppInfo 响应中 connectkey/decryptkey 掩码为 8 个 *,
其余字段(appname/ver/free/notice/upurl 等 SDK 所需配置)正常下发。

验证(c=api 全链路): 构造测试应用(known keys) → Initialization 取 token
→ GetAppInfo:connectkey/decryptkey 均为 "********",appname/free 等
字段正常,响应全文不含真实密钥明文。php -l 通过。
This commit is contained in:
youpaishidifu
2026-10-10 11:38:57 +08:00
parent 347af5537a
commit 7d4ed3e7cd
+5
View File
@@ -203,6 +203,11 @@ if ($data['mod'] == 'GetAppInfo'){
}
$i ++ ;
}
// 安全加固 (P0-04):connectkey/decryptkey 是服务端与 SDK 通信的签名/解密密钥,
// 原实现把 sq_apps 全行(含这两个密钥明文)返回给 SDK,导致任何持有合法
// token 的调用方/抓包者拿到密钥后可伪造该应用的任意 API 请求。改为掩码下发。
if (isset($appinfo['connectkey'])) $appinfo['connectkey'] = str_repeat('*', 8);
if (isset($appinfo['decryptkey'])) $appinfo['decryptkey'] = str_repeat('*', 8);
$communication->back(1,'',$appinfo);
}