Как я могу сделать эти правила базы данных Firebase более жесткими? - PullRequest
0 голосов
/ 09 сентября 2018

Так что я скоро запускаю свое приложение и работаю с правилами базы данных Firebase, чтобы быть как можно более строгими. Ниже приведены мои правила.

Правила:

У меня есть 2 типа пользователей:

  • Пользователи приложений для смартфонов.

  • Модули GPRS, которые отправляют данные в javascript, и этот 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",
      },
    }    
  }      
}    
...