首页 > 解决方案 > 如何在 Firebase 应用中生成安全邀请令牌?

问题描述

我有一个使用实时数据库和云功能的 Firebase 应用

在我的应用程序中,用户是组的一部分,并且可以访问组中的所有数据

我正在尝试为用户创建一种方式来邀请另一个用户加入群组

例子:

下面是 Alice 创建邀请链接后的数据库结构:

{
  "groups":{
    "alice_group_uid":{
      "name":"Alice's Group",
      "users":{
        "alice_uid":true
      },
      "invites":{
        "token_uid":{
          "expiration":1632338701203,
          "token":"5bb7b3f102b0a9fc66d9a447ae52590fd23eb2a150ff7568dc9ce62126d9c8dd"
        }
      }
    }
  },
  "users":{
    "alice_uid":{
      "name":"Alice",
      "groups":{
        "alice_group_uid":true
      }
    },
    "bob_uid":{
      "name":"Bob"
    }
  }
}

邀请链接是https://myAppUrl.com/invite?group=alice_group_ui&invitekey=token_uid&token=5bb7b3f102b0a9fc66d9a447ae52590fd23eb2a150ff7568dc9ce62126d9c8dd

它是通过以下方式生成的:

import { randomBytes } from 'crypto';

randomBytes(32, (e, buff)=>{
  const token = buffer.toString('hex');
})

邀请条目 uid 是从firebase 唯一推送 id生成的

我想知道它是否足够或过度?除了生成随机字节,我还可以散列到期日期和邀请条目 uid。或者我可以只使用 firebase 唯一的推送 ID 并完全放弃随机令牌吗?还是使用令牌作为密钥?

使这个足够安全的最佳方法是什么?

标签: firebasesecurityfirebase-realtime-databasetokenfirebase-security

解决方案


推荐阅读