Защита таблицы Firebase, в которую должны писать несколько пользователей - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть база данных реального времени firebase со следующей структурой:

users:
  user_id:
    name: str
    friend_ids: [str]
records:
  record_id:
    text: str

Сейчас я пытаюсь защитить эту базу данных, чтобы минимизировать вероятность того, что злобные пользователи будут удалять или перезаписывать информацию о значении в БД. Если бы каждый пользователь мог писать только в свою запись в таблице пользователей, я полагаю, что мог бы защитить данные с помощью правила Firebase, например:

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

Однако каждый пользователь также должен иметь возможность записи другим пользователям. 'записей, так что, например, пользователь A может подружиться с пользователем B и может атомарно обновлять атрибуты friend_ids пользователя A и B.

Мой вопрос: как мне go обеспечить защиту базы данных? с этой настройкой? Каждый пользователь должен иметь возможность записи в любой user_id и любой record_id. Любые рекомендации, которые могут предложить другие по этому вопросу, будут очень полезны!

1 Ответ

1 голос
/ 25 февраля 2020

Если я вас правильно понимаю, вы хотите, чтобы любой пользователь мог вписать свой собственный UID в чей-либо список друзей, при условии, что он одновременно вписывает UID этого другого человека в свой собственный список друзей.

В таком случае это будет:

"friends": {
  "$uid1": {
    "$uid2": {
      ".write": "$uid1 === auth.uid && 
        newData.parent().parent().child($uid2).child(auth.uid).exists"
    }
  }
}

Для простоты я написал проверку, как будто узел friends находится здесь на верхнем уровне. В любом случае, я бы порекомендовал сделать это, поскольку лучше всего моделировать плоские списки в Firebase, а не вкладывать типы сущностей.

...