auth.uid是共享机密吗



例如,当某人通过oAuth进行身份验证时,Firebase会创建一个类似于google:111413554342829501512的uid。

在Firebase规则中,您可以执行(读取和/或写入):

".read": "root.child('users').child(auth.uid).child('isAdmin').val() == true"

是否假设由于使用HTTPS,我无法通过嗅探网络读取消息?这就是它的工作原理吗?UID是Firebase规则使用的共享密钥?

经过身份验证后,我在浏览器的本地存储中的firebase:session::ack中看到该UID。

知道某人的用户id不会带来安全风险。

例如,我知道您的Stack Overflow用户id是4797603。仅凭这一事实,我就有可能在Stack Overflow上找到你。

但这丝毫不允许我假装自己是罗恩·罗伊斯顿。要完成后者,我需要知道您用于登录的用户名和密码(以及任何其他因素)。

这同样适用于Firebase。如果你知道我在某个Firebase支持的应用程序中的uid是google:105913491982570113897,你就不能突然假装是我。Firebase服务器会验证auth.uid值是否基于该用户的实际凭据。唯一的方法是以我的身份登录,在这种情况下,这需要你知道我的谷歌凭据。

我建议在使用UID的同时使用自定义ID。当你的应用程序增长时,你不想共享UID或将其四处传递。此外,在设置firebase规则时,您将引用UID,该UID应保持私有。

生成ID的随机字符串。

对于敏感的用户数据,在firestore中设置一条规则,只允许在request.auth.uid == user.uid时读取文档。这将防止不必要的访问。阅读更多关于消防商店规则的内容,可能与您的用例相关。

最新更新