如何使这些Firebase数据库规则更严格?

时间:2018-09-09 07:25:00

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

因此,我即将将我的应用程序投入生产,并且我一直在尽可能严格地使用Firebase数据库规则。以下是我的规则。

规则:

我有2种类型的用户:

  • 智能手机应用程序用户。

  • 将数据发送到javascript的GPRS模块,此javascript将该数据发送到我的firebase数据库。

  • 应用程序用户如果通过身份验证,则可以读取所有数据。

  • 应用程序用户无法在数据库上写入任何内容。
  • Javascript无法读取任何内容(Javascript已通过数据库验证,其UID为“ xyz”)。
  • JavaScript只能在“状态”节点中写入,并且仅当该节点中已经有数据写入时,它才能创建该节点的子节点,新数据也只能更新现有数据。
  • 用Javascript编写的数据必须是一个大于0且小于4的整数。

因此,给出以下规则代码: 有什么办法可以使它们更紧密吗?

是否存在可以使某人越过我声明的规则的缺陷?

{"rules": {
  ".read": false,
  ".write": false,
"Parking_Spots": 
{
    ".read": "auth != null && auth.uid !== 'xyz'",
    ".write": false,    
  "$City":
  {
  ".read": "auth != null && auth.uid !== 'xyz'",
      ".write": false,
    "$ID_Parking_Spots":
    {
         ".read": "auth != null && auth.uid !== 'xyz'",
         ".write": false,
      "Coordinates":
      {
           ".read": "auth != null && auth.uid !== 'xyz'",
           ".write": false,
      },
      "Status": 
      {
        ".read": "auth !== null && auth.uid !== 'xyz'",
        ".write": "auth.uid === 'xyz' && data.exists()",
        ".validate": "newData.isNumber() && newData.val() > 0 && newData.val() < 4",
      },
    }    
  }      
}    

0 个答案:

没有答案