Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase数据库-与在客户端公开uid相关的风险?_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Firebase数据库-与在客户端公开uid相关的风险?

Firebase数据库-与在客户端公开uid相关的风险?,firebase,firebase-realtime-database,firebase-authentication,Firebase,Firebase Realtime Database,Firebase Authentication,简短问题:如果我在客户端公开其他用户的UID,会有什么风险/问题 我的情况: 我正在构建一个测试android应用程序,它需要能够让1)用户foo请求授权,以便2)访问用户a的私人数据 我不知道这是否是一个“愚蠢”的事实,但我似乎在Firebase上找不到任何关于“不要暴露UID”的警告。我已经浏览了用户安全部分和Firebase的聊天示例演示,常用的方法似乎是创建一个字段“share”或“authorized”,其中授权用户的uid为true。我的问题主要是关于第一步。下面是我的数据结构的一个

简短问题:如果我在客户端公开其他用户的UID,会有什么风险/问题

我的情况: 我正在构建一个测试android应用程序,它需要能够让1)用户foo请求授权,以便2)访问用户a的私人数据

我不知道这是否是一个“愚蠢”的事实,但我似乎在Firebase上找不到任何关于“不要暴露UID”的警告。我已经浏览了用户安全部分和Firebase的聊天示例演示,常用的方法似乎是创建一个字段“share”或“authorized”,其中授权用户的uid为true。我的问题主要是关于第一步。下面是我的数据结构的一个片段

 {
      "users" : {
        "uid_of_user_a" : {
          "requests" : {
            "-KeXTQeFJ2gAiaazteO1" : {
              "requestUid" : "uid_of_user_foo",
              "targetUid" : "uid_of_user_a",
              "timeStamp" : 123456
            }
          }
        }
      }
    }
我的想法是这样的

  • 请求字段的规则是,对于具有 用户的uid\u,并且仅当任何经过身份验证的用户 推入与用户a的uid\u匹配的targetUid

  • 在客户端,用户A有一个onChildEventListener,附加了对此字段的引用。当客户端接收到OnChildeded回调时,将显示一个对话框并请求确认

  • 如果确认,客户端将从请求消息中检索请求者的uid,并将其推送到“authorized”字段

  • 然后,用户A的私有数据可以通过authorized字段中列出的uid读取

  • 问题:需要向客户端公开另一个用户的uid。这种方法类似于打电话给某人,呼叫者必须首先知道对方的电话号码。因此,在没有实际给出电话号码和电子邮件的情况下,有些人必须知道UID,以便甚至可以获得消息并要求获得可共享的数据,对吗?。。。。但是,我的直觉方法似乎不确定


    我不熟悉firebase数据库和用户身份验证,所以请原谅我的法语:)提前感谢所有的专家。

    UID只是一个字符串。里面没有任何信息。这段秘密信息是用户的密码(你永远看不到)和他们的临时身份验证令牌,一小时后过期。SDK将自动刷新该令牌

    如果安全规则设置正确,就不会有问题。如果一个用户知道另一个用户的UID,那么如果您的规则不允许,第一个用户将无法影响第二个用户的数据。如果您需要的话,您可能希望将有关用户的公共信息和私人信息分离为不同的安全规则


    如果出于某种原因,您仍然认为UID需要保密,您可以生成一个不同的UUID或其他东西来识别用户并使用它,但我不知道这将提供什么额外的安全性。

    谢谢您的回复,我现在感到非常放心。作为初学者,我对uid有所保留,因为Firebase数据库标准做法使用“$uid===auth.uid”作为允许用户访问其私人数据的规则。我的直觉(不知道auth实际上是如何工作的)是,用户能够使用uid进行欺骗。在用户之间使用UID进行授权是一种标准做法吗?该规则确保只有具有该UID的完全认证用户才能访问其中的数据。它不能被欺骗-它只适用于使用Firebase身份验证且用户已登录的应用程序。它不仅仅是某些web API的参数。