Как я могу написать свои правила безопасности Firebase, если мне нужны пользователи, не вошедшие в систему, чтобы иметь возможность читать и писать?

Я новичок в Firebase, и у меня проблемы с правилами безопасности. Недавно я взял на себя управление проектом, и текущие правила таковы:

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

Очевидно, это небезопасно. Приложение позволяет пользователям (вошедшим в систему) вводить номер телефона клиента и использует Twilio для отправки этим клиентам текстового сообщения с просьбой просмотреть продукт пользователя. Клиентам не нужно выполнять вход в систему - они могут просто щелкнуть ссылку из Twilio, ввести свой звездный рейтинг и получить возможность перейти на другие сайты с обзорами.

В базе данных Firebase клиент (и вводимый им обзор) является потомком пользователя, который их ввел. Основываясь на документации, я не думаю, что смогу сделать правило, согласно которому пользователи должны проходить аутентификацию, потому что это будет применяться и ко всем дочерним элементам (клиентам).

Нужно ли мне добавлять анонимную аутентификацию в мое приложение, чтобы создать анонимный uid для каждого клиента? Есть ли более простой способ его обезопасить?

Вот пример экспорта Json из Firebase:

{
      "profiles" : {
        "User1_UID" : {
          "guests" : {
            "guest-id-here" : {
              "createdOn" : "2018-06-28T16:23:53.793Z",
              "firstName" : "",
              "id" : "id-here",
              "lastName" : "",
              "phone" : "",
              "ratingLeft" : true,
              "reviewSite" : true,
              "reviewSiteClicked" : {
                "facebook" : true,
                "google" : true,
                "other" : false,
                "tripadvisor" : true,
                "yelp" : true
              },
              "reviewSiteClickedOn" : "2018-06-28T16:26:46.237Z",
              "reviewedOn" : "2018-06-28T16:25:22.996Z",
              "starRating" : "5"
            },
            "guest2-id-here" : {
              "createdOn" : "2018-07-15T18:57:52.171Z",
              "firstName" : "Joe",
              "id" : "guest2-id",
              "lastName" : "Schmoe",
              "phone" : "+1234567890",
              "ratingLeft" : false,
              "reviewedOn" : "",
              "starRating" : ""
            },
            }
          },
      "User2_UID" : {
      "guests" : {
        "guest-id-here" : {
          "ratingLeft" : true
        }
      }
    },

Пожалуйста, разместите здесь свою структуру данных ...

Nishanth Sreedhara 25.10.2018 09:00

Обновлен пост, чтобы показать структуру базы данных.

Liah W. 26.10.2018 22:19

Ваше приложение использует Firebase Auth?

Nishanth Sreedhara 27.10.2018 05:31

Да, я использую Auth. Владельцы учетных записей могут войти в систему с помощью электронной почты / пароля. Гости, оставляющие отзывы, не авторизуются.

Liah W. 29.10.2018 14:56

Зарегистрированные пользователи идентифицируются по их UID, а как вы идентифицируете гостей?

Nishanth Sreedhara 29.10.2018 17:04

Гости получают идентификатор, когда они созданы вошедшими в систему пользователями, и этот идентификатор включается в URL-адрес, отправляемый Twilio. URL-адрес выглядит так: 5stars.q4launch.com/rating/USERID/GUESTID. Однако у гостя нет имени пользователя или пароля. Они могут просто щелкнуть ссылку в тексте, сделать свой выбор обзора, и он будет сохранен.

Liah W. 30.10.2018 17:18

Где оставляют рейтинг «Гости»? Не могли бы вы опубликовать структуру БД?

Nishanth Sreedhara 31.10.2018 02:57

Фактически вы можете создать правило для аутентификации пользователей и применять read / write = true только к гостевой части вашей структуры.

André Kool 31.10.2018 08:18
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
8
68
0

Другие вопросы по теме