Android应用的FCM密钥被窃取后是否会被恶意应用仿冒?
核心问题解答
原有验证逻辑正确性判断
你原本的验证思路是错误的。FCM token仅能证明该token为匹配你项目配置、对应指定包名的应用向FCM官方服务器申请的合法凭证,完全无法区分申请token的应用是正版还是仿冒的同包名应用,因此“推送可送达”不能作为token来源为正版应用的判定依据。
顾虑场景验证
你的猜测完全正确:
- 攻击者提取到你
google-services.json中的FCM项目配置(项目ID、API密钥等核心参数)后,只要制作包名与你正版应用一致的恶意应用,就可以正常向FCM申请到合法有效的token - 你服务端向这类恶意token发送推送时,FCM官方服务器会判定该token属于你的项目且有效,会正常返回成功响应无报错,推送内容会直接投递到恶意应用中,你无法通过FCM的接口返回值判断应用真伪。
可行的防护方案
- 新增应用签名校验:客户端上传FCM token时,同步上传当前应用的签名哈希值,服务端与你正版应用的官方签名哈希做比对,不一致直接拒绝注册请求。注意不要把签名校验逻辑放在客户端本地执行,避免被逆向破解绕过。
- 接入应用完整性校验:可以使用Google Play Integrity API,客户端注册时先获取完整性校验凭证传到服务端,服务端验证凭证合法后才允许绑定FCM token,可有效识别仿冒、篡改、非官方渠道分发的应用。
- 敏感推送内容加密:所有包含敏感信息的推送不要明文传输,使用仅正版客户端与服务端共享的加密密钥加密后再推送,即便恶意应用拿到推送内容也无法解密读取。
- 限制FCM密钥权限:在Google Cloud控制台限制
google-services.json中对应API密钥的使用范围,仅允许匹配你正版应用包名、签名的应用调用FCM相关接口,降低配置泄露后的滥用风险。
内容的提问来源于stack exchange,提问作者Nikolaj
相关产品推荐
相关产品推荐

