2017-01-24 5 views
6

Я работаю над Android-приложением, которое читает с Firebase database. Пользователи приложения не будут регистрировать или изменять базу данных. Все пользователи приложений будут искать одни и те же данные; Я использую Firebase для своих функций обновления в реальном времени.Ограничить доступ базы данных Firebase к одному Android-приложению

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

Я знаю несколько вещей, которые я мог бы сделать: правила безопасности

1. Писать, что позволяет любому читать, то есть

{ 
    "rules": { 
    ".read": true, 
    ".write": false 
    } 
} 

Con: Любой человек может прочитать :(

2. Напишите правила безопасности, которые allow authenticated users to read, затем введите код и пароль в приложение

{ 
    "rules": { 
    "$user_id":{ 
     ".read": "auth.uid === $user_id", 
     ".write": false 
    } 
    } 
} 

Кон: жесткое кодирование имени пользователя и пароля в приложении кажется очень неправильным. Кроме того, он фактически не блокирует базу данных, так как любой может декомпилировать приложение, захватить google-services.json и жестко запрограммированное имя пользователя/пароль и написать собственное приложение, которое поделилось именем моего пакета.

Googling раскрыл this, что характерно для письма, и this, в котором говорится «нет», но ему несколько лет.

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

+1

Ответ, который вы связываете, по-прежнему верен: нет возможности для limi t доступ к вашей базе данных Firebase только к вашему приложению. –

+0

Хорошо, спасибо @FrankvanPuffelen. – Michiyo

+0

Каков ваш окончательный выбор? – androfan

ответ

0

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

+5

Это неправда. С «.read»: true, «любой может получить доступ к веб-интерфейсу базы данных через http://project_name.firebaseio.com/ – androfan

+0

, вам будет страшно, когда вы поместите свое имя проекта в это приложение: https://play.google .com/store/apps/details? id = amit.ya.fire.realtimefirebase – iMobaio

1

3. Используйте FirebaseAuth и signInAnonymously() метод

ссылки: https://firebase.google.com/docs/auth/android/anonymous-auth

Затем настройте правила безопасности:

{ 
     "rules": { 
     ".read": "auth != null", 
     ... 
     } 
    } 

Con: несколько учетных записей, используемых только для чтения те же данные

+0

Это кажется еще менее безопасным, чем # 2, так как я бы отказался от способности скрывать/шифровать/обфускать (не здорово, но лучше, чем ничего ?) имя пользователя и пароль. Можете ли вы объяснить, почему вы думаете, что это лучше? – Michiyo