Как ограничить модификацию данных Firebase?
Firebase предоставляет базовую базу данных, чтобы разработчики могли сфокусироваться на клиентском коде.
Итак, если кто-то берет мой firebase uri (например, https://firebaseinstance.firebaseio.com
), то на нем развивается локально.
Затем, смогут ли они создать другое приложение из моего экземпляра Firebase, зарегистрироваться и пройти проверку подлинности, чтобы прочитать все данные моего приложения Firebase?
Ответы
Ответ 1
@Фрэнк ван Пуффелен,
Вы упомянули фишинговую атаку. На самом деле есть способ обеспечить это.
Если вы войдете в консоль googleAPIs API Manager, у вас будет возможность заблокировать, с какого HTTP реферера ваше приложение будет принимать запрос.
- посетить https://console.developers.google.com/apis
-
Перейдите в свой проект Firebase
- Перейти к учетным данным
- В разделе "Ключи API" выберите ключ "Браузер", связанный с вашим проектом Firebase (должен иметь тот же ключ, что и ключ API, который вы используете для инициализации приложения Firebase.)
- В разделе "Принимать запросы от этих 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