【问题标题】:Security issue with verifying firebase token on server side?在服务器端验证 Firebase 令牌的安全问题?
【发布时间】:2019-03-06 22:38:32
【问题描述】:

我正在使用 firebase 移动 otp 身份验证。成功验证后,我的 android 应用程序收到一个令牌,我必须在我的 django 服务器上验证它。但是,当我阅读验证此令牌的文档时,发现如果有人知道我的 firebase 项目 ID,他们可以随时生成有效的令牌。

要获取 contec,请查看 link 验证 firebase 令牌的最后一种方法

这不是很冒险吗,因为一旦有人知道您的 firebase 项目 ID,他们就可以创建假令牌??

自定义身份验证令牌是否也有助于解决此问题?

谢谢。如果我对 firebase 令牌验证的理解有误,请告诉我,一旦我们知道了 firebase 项目 ID,就不可能创建假令牌。

【问题讨论】:

  • “如果有人知道我的 Firebase 项目 ID,他们可以随时生成有效令牌”。 您是如何得出这个结论的?用户可以为自己的帐户获取令牌,但不能用于其他帐户,也不能用于不存在的帐户。
  • @DougStevenson 我还没有尝试过这个方法,但是上面问题中链接中的最后一个方法来验证 jwt 令牌,只需要检查两个参数 'iss' 和 'aud',这两个参数依赖于项目ID,因此可以放置一个随机的“uid”并使用jwt对其进行编码并将其发送到后端服务器。
  • @DougStevenson 我能想到的唯一解释是很难猜出与该项目相关的任何人的 uid

标签: firebase firebase-authentication firebase-admin


【解决方案1】:

ID 令牌由 Firebase Auth 拥有的私钥签名。它们不能被伪造。请注意,您引用的文档还指出:

最后,确保 ID 令牌由与令牌的 Kid 声明对应的私钥签名。从https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com 获取公钥并使用 JWT 库来验证签名。

伪造的 ID 令牌不会通过签名检查。

【讨论】:

  • 你能给我一些解释这个签名验证算法的链接吗?基本上在哪里可以理解这个加密协议是如何工作的?
  • 这是一个标准的 SHA256 RSA 签名验证。我建议您阅读更多有关非对称加密以及 JWT 令牌如何签名/验证的信息。以下是我们在 Go 中的做法:github.com/firebase/firebase-admin-go/blob/master/auth/…。大多数 JWT 库都会为您处理这个问题。
猜你喜欢
  • 2017-10-30
  • 2022-08-16
  • 2021-02-06
  • 2017-12-28
  • 2019-08-31
  • 2023-03-20
  • 2020-07-31
  • 2015-10-23
  • 2015-03-03
相关资源
最近更新 更多