Я ищу аутентификацию для базы данных Firebase Realtime и у меня есть несколько вопросов, на которые я не могу найти ответ.
У нас есть база данных Firebase в реальном времени, состоящая из набора данных, которые должны быть доступны для всех наших пользователей. однако он должен быть доступен только через наши мобильные приложения и, желательно, без необходимости регистрации пользователя и входа в систему. Пользователи не собираются писать в базу данных, нас беспокоит только часть чтения. Мы не хотим, чтобы кто-то «копировал» всю нашу базу данных через скрипт / приложение.
Этот вопрос очень похож на Ограничить доступ к базе данных Firebase одним приложением Android и Только для чтения Firebase без аутентификации из приложения . В этих обсуждениях предлагается использовать анонимную аутентификацию https://firebase.google.com/docs/auth/web/anonymous-auth.
Если я правильно понимаю анонимную аутентификацию, это не решит проблему. Любой может подключиться к тому же URL-адресу Firebase из своего собственного скрипта / приложения с использованием Firebase SDK и просто войти в систему анонимно. Это позволит им прочитать все наши данные.
Даже с учетом логина пользователя, например, Facebook или Google, наши данные будут по-прежнему подвержены риску взлома. Любой может создать пользователя в нашем приложении. После этого они могли создать свой собственный скрипт / приложение Firebase и подключиться к нашей базе данных с этим пользователем и получить данные.
Обсуждение Ограничение доступа к базе данных Firebase одним приложением Android говорит о возможных решениях для ограничения доступа только к мобильному приложению. Это можно сделать с помощью API-ключа или комбинации имени пользователя и пароля для приложения. Это будет либо жестко закодировано в приложении, либо отправлено через службу. Как указывалось в обсуждении, жесткое кодирование кажется как хакерским, так и небезопасным из-за декомпиляции, и в будущем будет сложно обновить его, если комбинация имени пользователя и пароля по какой-то причине изменится. Отправка ключа API через службу также небезопасна, поскольку любой может запросить службу извне. Как упомянуто в Как предотвратить другой доступ к моей базе данных , нет способа защитить URL.
Это достижимо или я что-то упустил?