Как я могу гарантировать, что только мое приложение может регистрировать и получать сообщения, отправленные из FCM? - PullRequest
0 голосов
/ 26 августа 2018

Я сейчас настраиваю проект Firebase Cloud Messaging.При добавлении приложений в этот проект некоторые учетные данные автоматически генерируются FCM, например, ключ сервера, а также ключи клиента Android и iOS.

Для Android я могу загрузить и использовать файл google-services.json для настройкиклиент, т.е. регистрация на токен FCM и получение push-сообщений.Но как мне ограничить это, чтобы только мое приложение могло получать эти сообщения?

Я думал, что это будет (автоматически созданный) ключ API клиента Android, поэтому для проверки я поставилневерное имя пакета и отпечаток SHA в ограничениях для ключа.Никакого эффекта, по-прежнему может получать сообщения.

Затем я попытался полностью удалить ключ API, а также информацию о клиенте oauth из файла google-services.json, чтобы подтвердить, что устройство не сможет получать сообщения.,Нет эффекта, все еще можно получать сообщения.Кажется, что вся информация о клиенте полностью игнорируется, за исключением идентификатора приложения (и общей информации о проекте).

Итак, мне действительно интересно, что мешает реверс-инжинирингу приложения извлекать идентификатор приложения и общую информацию о проекте, а затем получать push-сообщения в совершенно другом приложении?Я не понимаю, почему ключ API клиента Android и т. Д. Включен в файл google-services.json или почему они даже создаются, если он не используется.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

На прошлой неделе я связывался со службой поддержки Firebase, чтобы пролить свет на это.Кажется, есть важное различие между ныне устаревшим Google Cloud Messaging (GCM) и Firebase Cloud Messaging (FCM), и в настоящее время оно недостаточно хорошо документировано.

С GCM можно было использовать и ограничивать, например,Ключ API клиента Android с именем пакета и отпечатком SHA.Это больше невозможно с FCM.Ключи создаются автоматически при добавлении приложений в проект в консоли Firebase и включаются в файл google-services.json, и вы можете добавить ограничения к ним в разделе Учетные данные в API и службах, но это не окажет никакого влияния,

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

Будьте внимательны и помните об этом, когда решаете, что использоватьслужба обмена сообщениями для или при переходе с GCM на FCM.

Для Firebase существует запрос функции, но в настоящее время они не имеют временной шкалы.Там также запрос на обновление их документации по этой проблеме.

0 голосов
/ 26 августа 2018

Вся информация в google-services.json по сути является данными конфигурации, которые ваше приложение использует для поиска служб Firebase на серверах Google. Вы не должны полагаться на то, что вы знаете это или не знаете, как на механизм безопасности.

Вместо этого вы должны отправлять свои сообщения таким образом, чтобы они доставлялись только целевым получателям. Большая часть этого - отправка сообщений на конкретные токены ID экземпляра FCM . Жетоны идентификатора экземпляра Firebase не поддаются проверке. Первоначально этот регистрационный токен известен только на клиентском устройстве, где он генерируется, и это устройство определяет, с кем поделиться им.

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

С другой стороны это темы FCM , которые являются более простым механизмом доставки сообщений группам пользователей. Поскольку любой клиент может подписаться на любую тему, для которой он знает идентификатор, темы следует использовать для доставки сообщений, требующих менее надежной целевой доставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...