Поиск…


Вступление

С базой данных Firebase Realtime ваши правила базы данных - это ваша безопасность на стороне сервера. Вы должны быть очень осторожны и знать, кто имеет доступ к вашей базе данных. Важно, чтобы никто не получал доступ к вашим данным, которые не должны.

По умолчанию правила базы данных Firebase Realtime позволяют любому аутентифицированному пользователю читать и записывать все данные, это, вероятно, не то, что вы хотите, чтобы ваше приложение выполняло.

Взгляните на приведенные ниже примеры для разных сценариев.

замечания

База данных Firebase Realtime предоставляет гибкий язык правил, основанных на выражениях, с синтаксисом, подобным JavaScript, для легкого определения того, как ваши данные должны быть структурированы, как их индексировать и когда ваши данные могут быть прочитаны и записаны. В сочетании с нашими службами аутентификации вы можете определить, кто имеет доступ к тем данным и защищает личную информацию своих пользователей от несанкционированного доступа.

По умолчанию ваши правила базы данных требуют проверки подлинности Firebase и предоставляют полные права на чтение и запись только для аутентифицированных пользователей. По умолчанию правила гарантируют, что ваша база данных не будет доступна никому, прежде чем вы сможете настроить i

Официальная документация

https://firebase.google.com/docs/database/security/quickstart

Как настроить правила

  1. Войдите в консоль Firebase.
  2. Выберите свой проект
  3. Нажмите на раздел «База данных» слева и выберите вкладку «Правила».

Если вы хотите протестировать свои правила безопасности перед их внедрением, вы можете имитировать операции в консоли, используя кнопку «Имитировать» в правом верхнем углу редактора правил.

Правила по умолчанию

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

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Как настроить ваши файлы общедоступными и доступными для записи

Просто определите:

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Это может быть полезно во время разработки, но обратите внимание, потому что этот уровень доступа означает, что кто-либо может читать или писать в вашу базу данных .

Как отключить доступ для чтения и записи

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

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

Как предоставить доступ только для аутентифицированных пользователей

Ниже приведен пример правила, которое дает каждому аутентифицированному пользователю персональный узел в /users/$user_id где $ user_id - это идентификатор пользователя, полученного с помощью аутентификации .

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

Как разрешить чтение определенного элемента из группы, но запретить перечисление членов группы

Общепринятой практикой является создание групп элементов путем создания простых узлов с идентификатором элемента в качестве ключа. Например, мы можем добавить пользователя в группу «администраторы», создав узел в /administrators/$user_id со значением true . Мы не хотим, чтобы кто-либо знал, кто администраторы, по соображениям безопасности, но мы все же хотим проверить, является ли аутентифицированный пользователь администратором . С помощью этих правил мы можем сделать именно это:

{
  "rules": {
    "administrators": {
      // No one can list administrators
      ".read": "false",
      "$uid": {
        // Authenticated user can check if they are in this group
        ".read": "$uid === auth.uid",
        // Administrators can write
        ".write": "data.parent().child(auth.uid).val() === true",
        // Allow only add or delete, no duplicates
        ".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow