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

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

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

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

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

Знание того, кто ваши пользователи, является важной частью создания приложения, а аутентификация Firebase обеспечивает простое в использовании, безопасное решение для аутентификации только на стороне клиента. Правила безопасности Firebase для облачного хранилища связаны с аутентификацией Firebase для обеспечения безопасности на уровне пользователей. Когда пользователь аутентифицируется с помощью аутентификации Firebase, переменная 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/.*');
    }
  }
}

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