Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止用户修改Firebase中的数据,但允许应用程序更新此数据_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

阻止用户修改Firebase中的数据,但允许应用程序更新此数据

阻止用户修改Firebase中的数据,但允许应用程序更新此数据,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我用盖茨比JS(React)+Firebase创建了一个应用程序 用户的分数与其数据一起保存在Firebase实时数据库中 { users: { $uid: { score: 10, name: "Antho", ... } } } 我不希望用户能够自己更改他们的分数,因此我按如下方式拆分我的数据库: { users: { $uid: { name: "uciska", ... } },

我用盖茨比JS(React)+Firebase创建了一个应用程序

用户的分数与其数据一起保存在Firebase实时数据库中

{
  users: {
    $uid: {
      score: 10,
      name: "Antho",
      ...
    }
  }
}
我不希望用户能够自己更改他们的分数,因此我按如下方式拆分我的数据库:

{
  users: {
    $uid: {
      name: "uciska",
      ...
    }
  },
  scores: {
    $uid: {
      score: 10
    }
  }
}
但我不知道该制定什么规则

我想我需要一些后端代码。如果是这样的话,我希望在不必设置Node.js服务器的情况下使用Amazon Lambda函数

可能吗?从哪里开始


Cloud Firestore能否更简单地做到这一点?

如果您不希望您的用户能够编写分数,您可以简单地使用这些:

有了这个,每个用户都可以在
/users/$uid
下写下任何分数

接下来,您将希望在受信任的环境中使用来编写分数。受信任的环境是您可以控制访问的环境,例如服务器、开发机器或应用程序。在云函数中运行或以其他方式使用AdminSDK的代码具有管理权限,这意味着它绕过了安全规则。这样代码就可以读/写整个数据库,包括分数

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "auth.uid == $uid"
      }
    }
    "scores": {
      ".write": false // this is not strictly needed, since the default is false
    }
  }
}