Как скрыть определенный узел в базе данных Firebase в реальном времени

У меня есть 2 вопроса, связанных с базой данных Firebase в реальном времени.

Q1) Можно ли скрыть определенный узел от публики, и только один человек имеет доступ к этому узлу?

(Я хочу сохранить ключ транзакции в базе данных, и только 1-2 человека могут получить доступ к этому ключу из базы данных.)

Q2) Если мои правила безопасности для базы данных установлены как общедоступные, может ли кто-либо загрузить/получить доступ к полным данным, или они должны знать структуру, чтобы получить доступ к данным из базы данных.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
0
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

А1/ Да, можно ограничить доступ к определенному узлу только для подмножества пользователей. Для этого есть несколько подходов. Если это небольшое и более или менее стабильное подмножество пользователей, вы можете проверить, содержится ли их uid в определенном узле со списком uid пользователей-администраторов, как показано ниже:

{
  "rules": {
    "secretnode": {
      //only an admin user can read
      ".read": "auth != null && root.child('adminusers/' + auth.uid).exists()"
    },
    "adminusers": {
        ".read": false,
        ".write": false
    },
    "othernodes": {
        ".read": true,
        ".write": true     
    }
  }
}

И, например, в базе данных вы сохраняете uid администратора следующим образом:

DBRoot
   - adminusers
        - uid1
           - name: "aaaaaa"
           - otherDataItem: "xxxxxx"
        - uid2
           - name: "bbbbb"
           - otherDataItem: "yyyy"

А2/ Да, если ваши правила безопасности для базы данных корень установлены как общедоступные, "любой (может) загрузить/получить доступ к полным данным". Обратите внимание, что, как поясняется в документация:

Shallower security rules override rules at deeper paths. Child rules can only grant additional privileges to what parent nodes have already declared. They cannot revoke a read or write privilege.

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

Спасибо! @Рено

Ghulam Ahmed 22.05.2019 16:48

еще одна вещь, как упоминалось выше, что представляют собой «другие узлы» в структуре? например, если у меня есть 8 узлов, из которых я должен скрыть 1, а остальные 6 открыты для публики, как я могу установить правила?

Ghulam Ahmed 22.05.2019 17:02

Вы должны создать правило для каждого узла, аналогичное правилу для других узлов.

Renaud Tarnec 22.05.2019 17:26

Но это может быть беспокойным процессом, если у меня много узлов. Любая упрощенная идея, которая представляет один для всех?

Ghulam Ahmed 22.05.2019 18:37

Да, поместите все эти узлы под основной корневой узел.

Renaud Tarnec 22.05.2019 18:38

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