Firebase可调用云函数防中间人攻击及SSL pinning相关问题咨询
关于Firebase SSL Pinning相关问题解答
问题1:Firebase Cloud Functions的https.callable是否原生支持SSL pinning?
- 官方提供的
https.callable能力原生不内置SSL pinning功能,服务端云函数侧、客户端默认Callable SDK均没有提供开箱即用的证书锁定配置项。你抓包看到明文请求是因为默认仅走标准TLS证书校验,只要设备安装了中间人工具的根证书,就能解密流量。
问题2:若不支持,该如何做防护?使用Node.js编写函数,是否可以向Firebase申请SSL证书并绑定到云函数上?
- 首先明确SSL证书相关问题:Firebase云函数默认已经搭载了谷歌信任CA签发的免费SSL证书,如果你使用官方默认的
cloudfunctions.net域名,无需额外申请或绑定。如果需要使用自定义域名,可在Firebase控制台主机模块绑定自定义域名,平台会自动签发、续期SSL证书,不需要手动操作。 - 防护方案需要在客户端侧实现,服务端无需额外配置,iOS端可选择两种实现方式:
- 自行实现:通过Swift
URLSession代理拦截Callable的HTTPS请求,校验服务端返回证书的公钥哈希/证书本身,和App内置的可信哈希比对,不一致则直接断开请求。 - 第三方工具实现:使用TrustKit这类成熟的SSL pinning库,配置云函数对应的域名以及可信公钥哈希即可,可直接适配Callable SDK的网络请求。
- 自行实现:通过Swift
- 补充防护建议:除了SSL pinning,可开启Firebase App Check校验,开启后仅官方签名的合法App可调用你的云函数,即使流量被抓取,攻击者也无法伪造合法请求,防护覆盖度更高。
问题3:Firebase移动端SDK的请求是否做了证书锁定?我在抓包工具中没有捕获到任何读请求相关内容。
- Firebase官方移动端的核心SDK(包括Auth、Firestore、实时数据库、云存储等模块)默认启用了SSL pinning,所以你使用中间人抓包工具默认无法解密这类请求的明文,甚至无法捕获到对应请求,和你观察到的iTunes流量表现一致。而Callable Functions SDK默认没有开启pinning,所以你可以抓取到对应的明文请求,属于两类SDK的默认配置差异。
内容的提问来源于stack exchange,提问作者user2206906
相关产品推荐
相关产品推荐

