Как ограничить модификацию данных Firebase?

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

Итак, если кто-то берет мой firebase uri (например, https://firebaseinstance.firebaseio.com), то на нем развивается локально.

Затем, смогут ли они создать другое приложение из моего экземпляра Firebase, зарегистрироваться и пройти проверку подлинности, чтобы прочитать все данные моего приложения Firebase?

Ответ 1

@Фрэнк ван Пуффелен,

Вы упомянули фишинговую атаку. На самом деле есть способ обеспечить это.

Если вы войдете в консоль googleAPIs API Manager, у вас будет возможность заблокировать, с какого HTTP реферера ваше приложение будет принимать запрос.

  1. посетить https://console.developers.google.com/apis
  2. Перейдите в свой проект Firebase
  3. Перейти к учетным данным
  4. В разделе "Ключи API" выберите ключ "Браузер", связанный с вашим проектом Firebase (должен иметь тот же ключ, что и ключ API, который вы используете для инициализации приложения Firebase.)
  5. В разделе "Принимать запросы от этих HTTP-рефереров (веб-сайтов) просто добавьте URL своего приложения.

Это должно позволить только домену из белого списка использовать ваше приложение.

Это также описано здесь в контрольном списке запуска Firebase здесь: https://firebase.google.com/support/guides/launch-checklist

Возможно, документация firebase может сделать это более заметной или автоматически заблокировать домен по умолчанию и потребовать от пользователей разрешения на доступ?

Ответ 2

Тот факт, что кто-то знает ваш URL, не является угрозой безопасности.

Например: у меня нет проблем с сообщением о том, что мой банк размещает свой веб-сайт на bankofamerica.com и говорит там по протоколу HTTP. Если вы также не знаете учетные данные, которые я использую для доступа к этому сайту, знание URL не принесет вам никакой пользы.

Чтобы защитить ваши данные, ваша база данных должна быть защищена с помощью:

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

Все это описано в документации Firebase по безопасности и усилению. Правила, которые я настоятельно рекомендую.

С этими правилами безопасности единственный способ, которым чужое приложение может получить доступ к данным в вашей базе данных, - это если они копируют функциональность вашего приложения, позволяют пользователям входить в свое приложение вместо вашего и входить/читать из/писать в ваша база данных; по сути фишинговая атака. В этом случае в базе данных нет проблем с безопасностью, хотя, возможно, пришло время привлечь некоторые органы власти.

Ответ 3

Относительно белого списка для мобильных приложений, где доменное имя не применимо, Firebase имеет

1) SHA1 fingerprint для Android-приложений и

2) App Store ID and Bundle ID and Team ID (if necessary) для ваших приложений iOS

который вам нужно будет настроить в консоли Firebase.

С этой защитой, поскольку проверка не только в том случае, если у кого-то есть действительный ключ API, домен Auth и т.д., но также он исходит из наших авторизованных приложений и domain name/HTTP referrer in case Веб.

Сказано, что нам не нужно беспокоиться, если эти ключи API и другие параметры подключения доступны другим.

Fore подробнее, https://firebase.google.com/support/guides/launch-checklist