保护 Firebase 可调用函数免受中间人的影响

Posted

技术标签:

【中文标题】保护 Firebase 可调用函数免受中间人的影响【英文标题】:Protect Firebase callable functions from man in the middle 【发布时间】:2021-11-06 11:25:25 【问题描述】:

我在 ios 上使用 firebase 制作了我的移动应用,并且我使用可调用函数与数据库进行通信。

当我尝试使用像 Charles 这样的简单应用程序执行“中间人”攻击/移动时,我可以看到我所有的呼叫以及我发送的纯文本数据。当我使用像 iTunes 这样的知名应用程序时,我无法解密任何东西(我认为这就是我们所说的 ssl pinning)

我有 3 个问题:

firebase 云函数 (https.callable) 是否处理 ssl pinning? 如果没有,我该如何保护?将节点用于我的功能,是否可以从 firebase 请求 ssl 证书并将其链接到功能? 移动 SDK 请求是否已固定?我在嗅探应用上看不到任何有关读取调用的信息。

谢谢大家。

【问题讨论】:

【参考方案1】:

根据 Doug 的这篇帖子 here,所有进出 Google 的数据都经过加密(包括客户端 SDK)。根本没有办法解决这个问题。

现在,您可以更进一步,通过配置 App Check 来防止滥用,根据文档,它提供了额外的安全层,防止计费欺诈和网络钓鱼。

但是,您仍然需要检查身份验证令牌(通过 onCall 函数自动传递)以确保用户有权执行他们正在调用的函数。

【讨论】:

谢谢。如果所有内容都已加密,我如何在请求的标头中看到身份验证令牌。我有纯文本的端点、令牌和数据,只是简单地嗅探网络。应用程序检查已经一个月了,检查令牌是没有用的,因为我可以清楚地看到它并随时修改请求。 @user2206906 这是您提出的一个很好的问题。我可以试着解释一下,但是这篇文章比我以前做得更好security.stackexchange.com/questions/19616/…TLDR;像 Charles 这样的代理之所以有效,是因为您已经安装了它并授予它拦截请求的权限 是的,我想我明白了,事情是如何解释我的可调用对象是纯文本的,例如从 iOS SDK 获取 Firebase 远程配置的请求充满了奇怪的字符,一个是安全的,另一个不是。 这是 firebase 请求的正文:ibb.co/KFfCXGN,这是我的可调用函数请求的正文:ibb.co/NNyGdkn 两者都使用 SSL 解密嗅探网络。有没有办法让我实现 firebase sdk 的功能? @user2206906 根据此处firebase.google.com/support/privacy 的文档,所有 Firebase 数据在传输过程中都使用 HTTPS 加密,***.com/questions/63550897/… Doug 声明云功能提供 SSL 证书。也许您还没有将 Charles 配置为代理远程配置主机。这只适用于您信任 Charles 并允许它在您的浏览器中安装证书,使其能够拦截您的 SSL 请求。这不能在用户不知情的情况下完成

以上是关于保护 Firebase 可调用函数免受中间人的影响的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javascript 中保护 location.href 免受跨站点脚本的影响?

保护我的应用程序安全免受反汇编程序的影响

Firebase 可调用函数未接收参数

sql参数保护你免受啥影响?

SSL:如何保护证书免受中间人攻击?

Firebase 可调用函数冷启动