【问题标题】:Is using Firebase Authentication using Custom tokens safe?使用自定义令牌使用 Firebase 身份验证是否安全?
【发布时间】:2018-06-07 16:05:15
【问题描述】:

我在 java 上使用 Firebase Admin SDK 来创建带有自定义声明集的自定义令牌。我将这些发送回作为客户端界面的 ANDROID 应用程序,并使用以下方式登录:

signInWithCustomToken("foundtokenfromserver");

现在用于签署令牌的服务帐户文件是安全且隐藏的。但由于数据库 URL、API 密钥和存储桶 URL 都暴露在 Web 部件上,我认为任何人都可以从中制作自己的应用程序。我确实制定了安全规则,将用户限制在他们自己的节点上。

我主要关心的是:

如果有人拦截了铸造的自定义令牌并将其保存。他们不能只使用该令牌使用上述 FirebaseApp(使用公开信息生成)登录吗?

有没有办法让firebase确实防止这种滥用(也许身份验证域可以阻止网络,但本地主机呢)?

【问题讨论】:

  • 我从来没有创建过自定义令牌,所以我不能告诉你太多。但是您不必担心数据库 url、api 密钥和存储 url 被暴露。除非您的数据库和存储将安全规则设置为公共。然后任何人都可以从 url (check) 访问它。 api 密钥也不是问题,因为它只不过是为你的项目命名的另一种方式(参考这个post
  • 是的,我明白了,但是暴露了这些,任何人都可以在 web 和 android 上初始化 FirebaseApp 实例(idk about ios)。如果他们确实拿到了身份验证令牌,我担心他们可能只能进行身份验证,或者说伪装并进入。android sdk 也会透明地刷新令牌,所以......是的,终身访问:-\跨度>
  • 我认为没有人可以使用这些数据初始化 FirebaseApp 实例。因为在 Android 上,您需要 google_services.json 文件来初始化您的应用程序。在网络上,您需要先登录 Firebase CLI,然后才能使用 Firebase 托管服务/部署网络应用。
  • google_services.json 如果有人解压 apk 就会暴露。它们也可以具有相同的包 ID,在我的情况下,由于一个应用程序中有多个 firebase 项目,因此 firebase 应用程序不受 sha1 保护。正如你所说,由于登录,网络是安全的:D
  • 我太担心了 :'( 愚蠢的过度思考的大脑......我相信 android 上也一定有一些东西可以拯救我

标签: android firebase firebase-authentication


【解决方案1】:

一般来说,您只会在向您的服务器发送一些 auth 断言后铸造自定义令牌。例如,您可能正在使用您自己的使用电子邮件/密码的自定义身份验证系统。另一个示例是,您可能正在使用不受支持的 OAuth 提供程序,并假设该提供程序已经验证了用户并且仅在验证应用程序后返回了断言(OAuth 凭据/授权代码等)。此外,您将使用安全的 TLS 连接来防止窃听。

【讨论】:

  • 是的,断言总是首先发生,是的,连接将是生产中的 TLS 连接:) 我猜我只是有点偏执,哈哈
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2017-12-19
  • 2019-06-28
相关资源
最近更新 更多