защитите API REST для использования клиентами Android

мы разрабатываем API JSON REST в Rails для использования Android-приложением, которое мы также разрабатываем. Есть ли способ защитить API, чтобы он мог использоваться только нашим конкретным приложением для Android?

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

Я мог бы легко добавить токен аутентификации в API и распространять его с приложением, но:

  1. нам, вероятно, придется переместить API на SSL, если мы используем базовую аутентификацию.
  2. это, вероятно, тривиально для решительного человека, чтобы открыть Android APK binary и раскрыть токен auth в любом случае.

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

какой наиболее разумный подход принять?

1 ответов


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

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

Если это не так, добавление токена Auth не будет тривиальным, но, по крайней мере, большим шагом для людей, которые натыкаются на ваш API. И не очень плохая идея для реализации этот.

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

означает, что вам все равно придется это сделать(добавление жестко закодированного токена). Только вы делаете это очень трудно для решительного человека, чтобы раскрыть токены доступа и запроса и методы.

Это зависит от ситуации, но я бы пошел на SSL и жестко знак.

дополнительная безопасность:

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