From 7d4ed3e7cd8593d129a3f33375e9aea0cce5a74d Mon Sep 17 00:00:00 2001 From: youpaishidifu <1@ypshidifu.cn> Date: Sat, 10 Oct 2026 11:38:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=9B=BA-05(P0-04):=20api=20GetAppInf?= =?UTF-8?q?o=20=E4=B8=8D=E5=86=8D=E6=98=8E=E6=96=87=E4=B8=8B=E5=8F=91=20co?= =?UTF-8?q?nnectkey/decryptkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 通过。 --- api/Communication.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/Communication.php b/api/Communication.php index 19e7429..66e72a2 100644 --- a/api/Communication.php +++ b/api/Communication.php @@ -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); }