Firebase数据库-与在客户端公开uid相关的风险?
简短问题:如果我在客户端公开其他用户的UID,会有什么风险/问题 我的情况: 我正在构建一个测试android应用程序,它需要能够让1)用户foo请求授权,以便2)访问用户a的私人数据 我不知道这是否是一个“愚蠢”的事实,但我似乎在Firebase上找不到任何关于“不要暴露UID”的警告。我已经浏览了用户安全部分和Firebase的聊天示例演示,常用的方法似乎是创建一个字段“share”或“authorized”,其中授权用户的uid为true。我的问题主要是关于第一步。下面是我的数据结构的一个片段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。我的问题主要是关于第一步。下面是我的数据结构的一个
{
"users" : {
"uid_of_user_a" : {
"requests" : {
"-KeXTQeFJ2gAiaazteO1" : {
"requestUid" : "uid_of_user_foo",
"targetUid" : "uid_of_user_a",
"timeStamp" : 123456
}
}
}
}
}
我的想法是这样的
我不熟悉firebase数据库和用户身份验证,所以请原谅我的法语:)提前感谢所有的专家。UID只是一个字符串。里面没有任何信息。这段秘密信息是用户的密码(你永远看不到)和他们的临时身份验证令牌,一小时后过期。SDK将自动刷新该令牌 如果安全规则设置正确,就不会有问题。如果一个用户知道另一个用户的UID,那么如果您的规则不允许,第一个用户将无法影响第二个用户的数据。如果您需要的话,您可能希望将有关用户的公共信息和私人信息分离为不同的安全规则
如果出于某种原因,您仍然认为UID需要保密,您可以生成一个不同的UUID或其他东西来识别用户并使用它,但我不知道这将提供什么额外的安全性。谢谢您的回复,我现在感到非常放心。作为初学者,我对uid有所保留,因为Firebase数据库标准做法使用“$uid===auth.uid”作为允许用户访问其私人数据的规则。我的直觉(不知道auth实际上是如何工作的)是,用户能够使用uid进行欺骗。在用户之间使用UID进行授权是一种标准做法吗?该规则确保只有具有该UID的完全认证用户才能访问其中的数据。它不能被欺骗-它只适用于使用Firebase身份验证且用户已登录的应用程序。它不仅仅是某些web API的参数。