2015-01-27 3 views
0

В настоящее время у меня есть жесткий пароль и имя пользователя в моей программе. Эти учетные данные используются для доступа к файлам с удаленного сервера. Как я могу помочь предотвратить переход от исходного кода и выяснение имени пользователя и пароля? (В настоящее время я использую Proguard для скрытия кода, но я новичок в этом) Существуют ли альтернативы жесткому кодированию строк в приложении?Как сохранить пароль сервера?

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

+0

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

+0

Все, что в APK небезопасно. И нет способа изменить это. Любой пользователь может легко просмотреть исходный код и получить любые жестко закодированные константы или ресурсы, содержащиеся в вашем APK. Хитрость заключается в том, чтобы просто забыть обо всем этом и перестать пытаться сделать ваш APK более безопасным. Скопируйте свой APK так, как будто он был открытым исходным кодом, он не может содержать какую-либо конфиденциальную информацию, которую вы не хотите, чтобы кто-либо другой имел. Существуют методы аутентификации, которые не требуют от вас хранить учетные данные сервера в вашем приложении, например [** OAuth **] (http://en.wikipedia.org/wiki/OAuth). –

+0

@bakriawad Это не работает. Вы не можете хранить что-либо секретное или безопасное в своем APK. Не важно, что вы делаете. Любой потенциальный злоумышленник может просто посмотреть исходный код вашего приложения и просто воспроизвести процесс, который приложение использует для дешифрования/шифрования пароля. Любой, у кого достаточно знаний, чтобы декомпилировать APK и искать пароль, может все это вывести из строя. –

ответ

-1

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

Подробнее:
How to securely store credentials (password) in Android application?

+0

Это не работает. Вы не можете хранить что-либо секретное или безопасное в своем APK. Не важно, что вы делаете. Любой потенциальный злоумышленник может просто посмотреть исходный код вашего приложения и просто воспроизвести процесс, который приложение использует для дешифрования/шифрования пароля. Любой, у кого достаточно знаний, чтобы декомпилировать APK и искать пароль, может все это вывести из строя. –

+0

@ XaverKapeller Я ничего не сказал о том, что это решение будет работать для всей вселенной. Я говорю только о сохранении пароля хеширования, это лучше, чем сохранение пароля обычного текста, потому что если кто-то декомпилирует исходный код, этого будет недостаточно для получения учетных данных. – mklimek

+0

Как этого недостаточно, чтобы получить учетные данные? Во-первых, хеширование - это процесс oneway. Пароль не может быть восстановлен из хэша без грубой силы. Поэтому, если вы добавили пароль в свое приложение, приложение больше не сможет восстановить пароль, чтобы использовать его для входа в систему. И если вы отправите хешированный пароль на сервер, тогда его хэширование в первую очередь будет бессмысленным. Я думаю, вы имеете в виду шифрование/дешифрование пароля при его хранении, но это не указывает на то, что так было. Потому что любой может просто декомпилировать приложение и реплицировать процесс, используемый для его расшифровки. –

Смежные вопросы