【问题标题】:Is Firebase supposed to run on the client?Firebase 应该在客户端上运行吗?
【发布时间】:2016-05-22 23:13:21
【问题描述】:

我对使用 Firebase (https://firebase.google.com/) 很感兴趣,我查看了他们的文档,他们的 JavaScript 示例似乎在客户端上运行,我真的很愚蠢还是一个坏主意?

以数据库功能为例:

function writeUserData(userId, name, email) {
  firebase.database().ref('users/' + userId).set({
    username: name,
    email: email
  });
}

什么可以阻止某人在浏览器中打开控制台并将他们想要的任何内容放入数据库中,可能是数千次?

另外,我启动了一个节点/快递服务器并设法让数据库功能在服务器上正常工作,但不幸的是我无法使用他们的身份验证功能,可能是因为它需要将令牌发送到客户端?

【问题讨论】:

  • 我认为没有什么能阻止任何人,但为什么有人会将数千个值写入数据库?

标签: javascript web firebase firebase-security firebase-realtime-database


【解决方案1】:

您可以编写security rules for your database,以验证保存的数据并确保用户只能读取/写入他们被授权的数据。

例如,您可以确保用户只能在/users 下修改自己的节点:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "auth.uid == $uid"
      }
    }
  }
}

我强烈推荐阅读documentation on the security rules for the Firebase Database

【讨论】:

  • 感谢您,Firebase 现在更有意义了。如果您不介意,还有一个问题,在使用 Firebase 电子邮件和密码身份验证时,Firebase 是否会在注册帐户时为用户输入提供任何验证,或者我应该在服务器端处理什么?
  • 您可以使用正则表达式在服务器端执行此操作。但在客户端也可以实现它是一种更好的做法。
【解决方案2】:

为了回答您的问题,您的应用程序代码都应该在客户端上运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2022-10-17
    • 2016-07-23
    • 2016-05-13
    相关资源
    最近更新 更多