Понимание правил безопасности Firebase для облачного хранилища

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

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

База данных Firebase Realtime имеет аналогичную функцию, называемую правилами базы данных Firebase Realtime .

Аутентификация

Знание того, кто ваши пользователи, является важной частью создания приложения, и Firebase Authentication предоставляет простое в использовании, безопасное решение для аутентификации только на стороне клиента. Правила безопасности Firebase для облачного хранилища связаны с аутентификацией Firebase для обеспечения безопасности на основе пользователей. Когда пользователь проходит аутентификацию с помощью Firebase Authentication, переменная request.auth в правилах безопасности облачного хранилища становится объектом, содержащим уникальный идентификатор пользователя ( request.auth.uid ) и всю другую информацию о пользователе в токене ( request.auth.token ). . Когда пользователь не аутентифицирован, request.auth имеет значение null . Это позволяет безопасно контролировать доступ к данным для каждого пользователя. Вы можете узнать больше в разделе Аутентификация .

Авторизация

Идентификация вашего пользователя — это только часть безопасности. Как только вы узнаете, кто они, вам понадобится способ контролировать их доступ к файлам в облачном хранилище.

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

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Вы можете изменить эти правила, выбрав приложение Firebase в консоли Firebase и просмотрев вкладку « Rules » в разделе «Хранилище».

Проверка достоверности данных

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

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

Следующие шаги