Безопасная практика - выполнять только часть приложения для гостевых пользователей, использующих приложение (которые не регистрируются) - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть приложение, которое заполняет карту маркерами местоположения (включая другие детали), которые хранятся в Firebase.Прямо сейчас пользователи могут просматривать / изменять (т.е. добавлять и / или удалять) местоположения, только если они создают учетную запись.

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

Какой самый безопасный подход к этому без ущерба для безопасности моегоdata?

Я действительно думал о жестком кодировании гостевого пользователя в коде, но это не похоже на хорошую практику.

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

Как вы думаете?

Предложения будут с благодарностью

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

После ваших ответов в комментариях, а именно:

  1. Требование: «Предоставлять гостям право только на просмотр, но не создавать / изменять» и «ограничивать их доступ толькомаркеры, а не на другие детали "
  2. Вы используете базу данных реального времени

, вы можете принять следующий подход:

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

-  fullData  <- This node and all children should be only accessible by authenticated users
   - ID1
      - lat: ....
      - long: ....
      - otherDetail1: ...
      - otherDetail2: ...
   - ID2
      - lat: ....
      - long: ....
      - otherDetail1: ...
      - otherDetail2: ...
   ....
-  markersOnly   <- This node and all children can be read by everybody
   - ID1
      - lat: ....
      - long: ....
   - ID2
      - lat: ....
      - long: ....
   ....

Чтобы синхронизировать два узла, вы должны использоватьupdate() метод, как описано здесь , который позволяет «одновременное обновление нескольких местоположений в дереве JSON с помощью одиночного вызова ».

Во-вторых , вы устанавливаете свои правила безопасности таким образом, что вы ограничиваете право создавать / изменять / читать данные в узле fullData только для аутентифицированных пользователей, но разрешаете всем читать данные в узле markersOnly (и разрешать только авторизованным пользователям создавать / изменять).

0 голосов
/ 24 сентября 2018

Самый простой способ - использовать анонимная аутентификация Firebase .

firebase.auth().signInAnonymously()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...