加固-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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user