Firebase 安全规则 - Auth 生成的 UID 是否应该保密?

Firebase security rules - is Auth generated UID ought to be kept secret?

我一直在阅读 Firebase 实时数据库安全规则指南 (https://firebase.google.com/docs/database/security),我对是否应该保留 Firebase Auth 生成的 UID 感到有点困惑(假设我的应用用户使用 Facebook 来验证自己)秘密?我有这样的数据结构:

那么如果一些恶意黑客获得了一些 UID,他是否能够 read/write 个人用户的数据?据我所知,如果有人知道 UID,he/she 可以设置请求并假装已通过该用户的身份验证?或者我在这里遗漏了什么?

非常感谢!

没有,uid可以在规则auth.uid下找回。这是服务器端。以此规则为例:

   "users": {
      "$uid": {
        ".read": "$uid === auth.uid", <--------------------------------
          "online": {
            ".read": "auth != null",
            ".write": "$uid === auth.uid"
          },

箭头表示我指的那条线。如果你得到了别人的 UID 并不重要,因为当你尝试使用该规则检索数据时,它会因为不匹配而失败。 auth.uid 是服务器端,据我所知,受到了很好的保护。他可以更改自己的 UID 客户端并尝试检索数据,但是使用安全规则可以阻止数据交换。

一切在于你定义的规则。当您在箭头处定义规则时,您不必担心。