безопасный процесс проверки между приложением Android и сервером - PullRequest
0 голосов
/ 03 марта 2019

Я пишу приложение для Android, которое не будет доступно в магазине Google Play.Я смотрю, как мне сделать, чтобы убедиться, что любой пользователь приложения действительно проверенный пользователь.

Я хотел бы использовать сервер для этого процесса, который приложение все равно использует для отправки / получения данных.Моя идея заключалась в том, чтобы создать что-то вроде задачи, которую могли пройти только проверенные клиенты.Так что любой, использующий поддельное приложение, не сможет обойти это.

Есть ли стандартный подход к этой проблеме?Я искал немного, но не нашел что-то полностью охватывающее это.Пожалуйста, имейте в виду, что я осознаю тот факт, что, учитывая тот факт, что приложение работает на телефоне Android, который является устройством, недоступным для меня, вероятно, всегда найдутся способы обойти проблемы.Я смотрю, что делает большинство в этих случаях.

1 Ответ

0 голосов
/ 04 марта 2019

Здесь есть две вероятные проблемы.Первый - это аутентификация пользователя (authn) и авторизация (authz), а второй - проверка подлинности самого клиентского приложения.

Для пользователя authn / authz я бы использовал некоторую форму OAuth2 с OpenID / Connect.Конечный результат заключается в том, что вы разрешаете клиентскому приложению доступ к конечным ресурсам от имени пользователя.Для начала вам доступны бесплатные коммерческие сервисы с открытым исходным кодом.

Более проблематичной является аутентификация самого приложения.Ключи API являются здесь стандартным подходом, но это статические секреты, которые не приносят много пользы, если приложение подделано или ключ обнаружен в канале связи.Независимо от того, как сильно вы пытаетесь скрыть или вычислить секрет по мере необходимости, если ваша конечная точка достаточно ценна, кто-то выполнит работу, необходимую для извлечения и злоупотребления секретом, а затем вашим бэкэндом.

Вы на хорошемотслеживать мышление о какой-то форме протокола вызова-ответа.Каптчи - это канонический подход, но они очень раздражают пользователей мобильного приложения и не всегда очень эффективны.Я полагаю (и полностью раскрываю, как и моя компания), что подтверждение подлинности приложения с помощью криптографически безопасного вызова является надежной стратегией.Аттестационная служба бросает вызов приложению и анализирует его реакцию.Задача оценивает, был ли изменен код приложения, и оценивает состояние среды выполнения (укоренено ли приложение «работает в отладчике», такие как фрида или xposed присутствует? »И т. Д.).Приложению выдается токен с коротким сроком службы - должным образом подписанный, если аттестация проходит, в противном случае недействительным.В приложении нет секрета, и приложение не принимает решение об аутентификации;он просто передает токен вашему бэкэнду, который проверяет время жизни токена и подпись, чтобы определить подлинность приложения.Нет токена или недействительный токен, и вы знаете, что это бот или взломанное приложение.

Чтобы узнать о подлинности пользователей и приложений, ознакомьтесь с публикацией в блоге, состоящей из трех частей, начиная с Техники безопасности мобильного API , или, если вы предпочитаете видео, ознакомьтесь с Тур по мобильному телефонуНедостаточная защита API .Я рекомендую вам также проверить Approov.io , как это может быть реализовано как услуга.

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