Как хранить учетные данные API в Android и избежать атаки декомпиляции? - PullRequest
2 голосов
/ 10 мая 2019

Моя конечная цель - сохранить мои учетные данные API, которые невозможно обнаружить путем декомпиляции apk.

В настоящее время мои учетные данные API жестко заданы в файле buid.gradle(app module).

Когда я декомпилировал свой собственный apk с помощью этого сайта , я смог найти URL-адрес API и другие учетные данные.

Теперь я ищу решение, и мне было бы интересно узнать, как анализируется файл "google-services.json".enter image description here

Если есть решение прочитать файл **my-cred.json** в папке приложения во время выполнения или во время компиляции (тот же каталог, где существует **google-services.json**), я думаю, что смогу защититьмои учетные данные от декомпиляции источника (исправьте меня, если я ошибаюсь)

Скажите, пожалуйста, способ чтения **my-cred.json** или любого другого решения для защиты учетных данных приложения

Ответы [ 3 ]

1 голос
/ 10 мая 2019

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

1 голос
/ 10 мая 2019

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

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

0 голосов
/ 10 мая 2019

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

Вы можете только запутать, чтобы нападающий потерял время ... Вот несколько способов запутать учетные данные вашего приложения, но ни один из них не является действительно безопасным, даже C ++ / JNI. https://rammic.github.io/2015/07/28/hiding-secrets-in-android-apps/.

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

Это зависит от того, сколько у вас есть времени и ваших потребностей в безопасности.

...