Блокировать пользователей, не являющихся Android, вызывающими сервис JSON - PullRequest
4 голосов
/ 05 ноября 2010

Мое приложение Android вызывает службу JSON через HTTP, и я хотел бы разрешить только моему приложению вызывать службу и блокировать другие.

Как лучше всего это сделать?

Один из способов, который я могу придумать, - это использовать шифрование с закрытым / открытым ключом.Можем ли мы надежно встроить закрытый ключ в приложение?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

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

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

1 голос
/ 05 ноября 2010

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

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

Самым простым (и наименее защищенным) будет ограничение доступа на основе агента пользователя.Но любой клиент может подделать пользовательский агент.

Сертификат / криптографическое решение является более надежным, но, как сказано выше, сертификат может быть извлечен из вашего приложения.тот же контекст, что и у вас.Но OAuth не был разработан для настольных (или мобильных) приложений, а также уязвим для обратного инжиниринга приложения.

Вы можете аутентифицировать пользователя (с помощью пользователя / пароля или другого стандартного метода).В этом случае вы не ограничиваетесь, основываясь на платформе.Затем вы можете закрыть учетную запись пользователей, злоупотребляющих вашим сервисом.Это безопасное решение, но не совсем решение вашей проблемы.

1 голос
/ 05 ноября 2010

Проще всего было бы использовать HTTPS с аутентификацией.

Отредактировано:

Вопрос здесь не в том, как защитить доступ к серверам, а в том, как скрыть / защитить учетные данные (пароли / сертификаты / и т. Д.) На телефонах Android. Вопрос должен быть: как скрыть данные внутри приложений Android.

Одним из решений является использование обфускатора, например ProGuard .

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