Ограничить доступ к базе данных Firebase одним приложением Android
Я работаю над приложением для Android, которое читает из базы данных Firebase. Пользователи приложения не будут входить в систему или изменять базу данных. Все пользователи приложения будут смотреть на одни и те же данные; Я использую Firebase для его обновления в реальном времени.
В идеале я хотел бы ограничить доступ к базе данных, чтобы только мое приложение могло читать данные.
Я знаю о нескольких вещах, которые я мог сделать:
1. Напишите правила безопасности, которые позволяют любому читать, то есть
{
"rules": {
".read": true,
".write": false
}
}
Con: Любой может читать:(
2. Напишите правила безопасности, которые позволяют аутентифицированным пользователям читать, а затем жестко закодировать имя пользователя и пароль в приложение.
{
"rules": {
"$user_id":{
".read": "auth.uid === $user_id",
".write": false
}
}
}
Против: Жесткое кодирование имени пользователя и пароля в приложении кажется очень неправильным. Кроме того, он на самом деле не блокирует базу данных, поскольку любой может декомпилировать приложение, взять google-services.json
и жестко запрограммированное имя пользователя / пароль, и написать свое собственное приложение, которое поделится моим именем пакета.
Гугл показал это, что характерно для письма, и это, что говорит "нет", но ему несколько лет.
Какой правильный подход ограничивает доступ к базе данных? Я подхожу к этому с неправильного направления?
2 ответа
3. Используйте FirebaseAuth
а также signInAnonymously()
метод
ссылка: https://firebase.google.com/docs/auth/android/anonymous-auth
Затем настройте правила безопасности:
{
"rules": {
".read": "auth != null",
...
}
}
Против: несколько учетных записей используются только для чтения одних и тех же данных
Когда вы добавляете свое приложение в проект Firebase, вы должны указать сертификат своего приложения SHA1, чтобы никто, кроме вас, не мог получить доступ к вашим данным.