【问题标题】:Lock down the database structure of firebase锁定firebase的数据库结构
【发布时间】:2018-02-26 17:01:48
【问题描述】:

我是 firebase 新手,我正在构建一个小型 SPA。 我可以设置如下安全规则。 (只有经过身份验证的用户才能读取或写入自己的项目。)

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

这很好,但是当我登录我的应用程序时,检查源代码并尝试在 项目表单 中添加隐藏的额外对象,firebase 仍然接受它。

在此屏幕截图中,blablab、blablabla 等对象是从 Chrome 的检查工具中添加的。

因为数据结构必须是这样的

users-->userId-->projects-->unquieKey-->project_title

但是我添加之后,db结构就乱了。

我想知道如何防止有人发送额外的数据或垃圾邮件对象?

【问题讨论】:

  • 登录后您可以发送数据,因为您是经过身份验证的用户
  • 这是否意味着每个用户(经过身份验证的)都可以向数据库发送垃圾邮件数据?我认为将有一个很好的选择来保护它。也许,我还不知道。
  • 看看this answer关于验证你的firebase规则中的数据结构。

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


【解决方案1】:

当你使用这个时:

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

这意味着只有经过身份验证的用户才能读取和写入数据库。因此,每个经过身份验证的用户都可以将数据发送到数据库。为了防止垃圾邮件,你需要想一个办法(也许是一个阻止用户将特定单词写入数据库的功能)

您也可以使用验证,这会有所帮助:

  {
 "rules": {

     ".validate": "newData.isString() && newData.val().length < 100"

  } 
 }

更多详情:https://firebase.google.com/docs/database/security/

你可以用这个:

  {
 "rules": {
      ".read": true,
      ".write": false

   }
 }

防止任何人发送数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多