Несколько дней назад один человек декомпилировал мое приложение и показал мне проблему в моем исходном коде. Я жестко кодировал ссылки и пароль моего сервера в исходном коде приложения, я не знал, через декомпиляцию, кто-нибудь может видеть мой исходный код. Я использую proguard, но proguard не обфускает строки. Это заставило меня задуматься, как правильно это сделать? Как мое приложение может совершать вызовы api, и сервер может его аутентифицировать? Я сделал исследование, но я не видел много информации об этом. Мое приложение не управляет пользователями и паролями. Пользователь и пароль, которые я храню в своем коде, являются теми, которые входят в систему на сервере.Android Communication Communication Security
ответ
Да, довольно легко увидеть декомпилированный код Java, чтобы получить ключи и тому подобное.
Есть несколько вещей, чтобы сделать:
Убедитесь, что «ключи приложения» или «жетоны» не секрет, с глубокими правами администратора. Многие SaaS/API-провайдеры предоставляют вам несколько ключей. Один из них - это клиентский ключ, который ограничен привилегиями/действиями, которые могут быть выполнены, и ключ сервера, который имеет больше привилегий, но не будет просочиться через код клиента. В этом случае вы не должны использовать одинаковые пароли входа/администрирования сервера. Рычаг Принцип наименьших привилегий()
Убедитесь, что строка является статическим окончанием. В этом случае Compiler и Proguard, которые позволяют встраивать строку. Это немного затрудняет узнать, для чего предназначена строка. Если у вас есть один класс «Config», довольно легко найти «facebook» в facebookAppId, «секретный» googleSecret и т. Д.
Чтобы быть действительно безопасным, вы можете выполнить некоторое шифрование или другой алгоритм на string, но это означает, что вы также храните секрет шифрования в самом коде.
В общем, я считаю (1) дает наиболее, так как вы всегда должны взять на себя любую строку в клиенте можно найти/взломана, то ли Android/Java с Proguard или уменьшенная JavaScript.
Я считаю, что вы имеете в виду этот пост. http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –