Firebase - auth.uid 是共享机密吗?
Posted
技术标签:
【中文标题】Firebase - auth.uid 是共享机密吗?【英文标题】:Is auth.uid a shared secret? 【发布时间】:2016-09-10 08:16:24 【问题描述】:似乎当某人通过 oAuth 进行身份验证时,Firebase 会创建一个类似于 google:111413554342829501512
的 uid。
在 Firebase 规则中,您可以执行(读取和/或写入):
".read": "root.child('users').child(auth.uid).child('isAdmin').val() == true"
是否假设由于使用了 HTTPS,我无法通过嗅探网络来读取消息?这就是它的工作原理 - UID 是 Firebase 规则使用的共享密钥吗?
经过身份验证后,我在浏览器的本地存储中看到 firebase:session::ack
中的 UID。
【问题讨论】:
【参考方案1】:知道某人的用户 ID 不是安全风险。
例如,我知道您的 Stack Overflow 用户 ID 是 4797603。仅凭这一事实,我就有可能在 Stack Overflow 上找到您。
但这绝不允许我假装自己是 Ron Royston。要执行后者,我需要知道您用于登录的用户名和密码(以及任何其他因素)。
这同样适用于 Firebase。如果你知道我在某个 Firebase 支持的应用程序中的 uid 是 google:105913491982570113897
,你就不能突然假装是我。 Firebase 服务器验证 auth.uid
值是否基于该用户的实际凭据。唯一的方法是以我的身份登录,在这种情况下,您需要知道我的 Google 凭据。
【讨论】:
***.com/questions/58788289/… 讲了一个服务器端调用admin.auth().createCustomToken(uid)
,这是否意味着如果我偷了别人的uid,那么我可以成功调用这个函数?
您需要项目的服务器端凭据文件才能使用 Admin SDK。以上是关于Firebase - auth.uid 是共享机密吗?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 规则如何获取“request.auth.uid”字段?
关于在Firebase auth Uid下检索嵌套数据并使用android studio推送uid
使用 auth.uid 限制对 Firebase-Database 的访问不起作用