Понимание правил безопасности 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/.*');
    }
  }
}

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