用于处理高级身份验证的firebase队列的安全规则

用于处理高级身份验证的firebase队列的安全规则,firebase,firebase-security,firebase-queue,Firebase,Firebase Security,Firebase Queue,我打算使用Firebase队列推送任务,以便使用用户的手机号码(如Whatsapp)注册移动应用程序。我正在使用第三方服务验证用户的手机号码。核查过程分为两步 将用户的手机号码发送至第三方服务,第三方服务返回请求id,并通过SMS向用户的手机发送代码 发送用户输入的请求id和代码,并进行验证 这就像用户在安装后第一次打开移动应用程序时我会做的第一件事。由于用户尚未注册,因此没有用户的身份验证数据 我想问我可以向firebase队列添加什么样的安全规则,这样外部人员就不能向firebase队列添加

我打算使用Firebase队列推送任务,以便使用用户的手机号码(如Whatsapp)注册移动应用程序。我正在使用第三方服务验证用户的手机号码。核查过程分为两步

  • 将用户的手机号码发送至第三方服务,第三方服务返回请求id,并通过SMS向用户的手机发送代码
  • 发送用户输入的请求id和代码,并进行验证
  • 这就像用户在安装后第一次打开移动应用程序时我会做的第一件事。由于用户尚未注册,因此没有用户的身份验证数据

    我想问我可以向firebase队列添加什么样的安全规则,这样外部人员就不能向firebase队列添加/删除任务

    我还可以直接在服务器上公开API,移动应用程序可以使用这些API执行上述验证,但我认为,如果有一种方法可以为这种情况下的firebase队列添加一些安全规则,那么我宁愿让移动应用程序只与firebase对话

    我创建了以下示例代码 1. 二,

    目前,任何知道我的应用程序位置的人都可以将任务添加到队列中。由于用户尚未通过身份验证,我无法向firebase添加任何特定于身份验证的安全规则。我正在考虑将带有应用程序机密的移动应用程序发布,并为firebase队列的安全规则提供类似的内容

    {
      "rules": {
      "queue": {
      "tasks": {
        ".write": "newData.appSecret === <appSecret>"
      }
    }
    
    {
    “规则”:{
    “队列”:{
    “任务”:{
    .write:“newData.appSecret==”
    }
    }
    

    这里是移动应用附带的
    ,每个新任务中都包含appSecret。现在,只有知道appSecret的客户端才能将任务添加到firebase队列。

    您尝试了什么吗?而不是(或除了)描述你想要什么,如果你展示你已经尝试过的东西,并展示失败的地方(或你怀疑方法的地方),它会更有用。它让我们以一种不那么模棱两可的方式看到你正在尝试什么(代码胜过文本)以及在您的逻辑中可能存在明显差距的地方。@FrankvanPuffelen我已经用我对安全规则的尝试和想法更新了问题Firebase队列有一个标题为“演示如何向队列中添加新项”的部分。@Kato我的问题不是关于如何向队列中添加任务。我的问题与安全规则有关我应该添加到firebase队列的es,因为客户端将在用户通过身份验证之前添加这些任务。因此,我猜您应该a)通过REST调用执行此操作,或者b)只允许任何人写入队列(有关限制客户端访问的更多信息,请参阅和)。可能是后者,因为它很简单。诀窍是限制请求以防止rainbow攻击。REST调用很好,因为您可以捕获referer IP。您尝试过什么吗?与其(或除了)描述您想要的,不如显示您已经尝试过的,并显示失败的地方(或者在您怀疑方法的地方)。它允许我们以一种不那么模棱两可的方式查看您正在尝试的内容(代码胜过文本)以及在您的逻辑中可能存在明显差距的地方。@FrankvanPuffelen我已经用我对安全规则的尝试和想法更新了问题Firebase队列有一个标题为“演示如何向队列中添加新项”的部分。@Kato我的问题不是关于如何向队列中添加任务。我的问题与安全规则有关我应该添加到firebase队列的es,因为客户端将在用户通过身份验证之前添加这些任务。因此,我猜您应该a)通过REST调用执行此操作,或者b)只允许任何人写入队列(有关限制客户端访问的更多信息,请参阅和)。可能是后者,因为它很简单。诀窍是限制请求以防止rainbow攻击。REST调用很好,因为您可以捕获referer IP。