#android #security
#Android #Безопасность
Вопрос:
Я создаю приложение, которое подключается к серверной части. Серверная часть защищена некоторыми учетными данными, которые приложение должно отправить при первом запуске, чтобы получить токен аутентификации и токен обновления (даже если пользователь никогда не проходит аутентификацию). Эти учетные данные компьютера уникальны для каждого клиента (один для приложения Android и один для приложения iOS). Более того, они отправляются в заголовках запроса через HTTPS.
В настоящее время я занимаюсь жестким кодом этих учетных данных компьютера (ID и secret) внутри кода приложения для Android.
Теперь, на iOS, приложение поставляется в виде двоичного файла, поэтому очень сложно перепроектировать и получить жестко запрограммированные учетные данные.
С другой стороны, приложение для Android поставляется в коде dex, который можно легко перепроектировать. Таким образом, даже при включенной Proguard любой может прочитать эти учетные данные компьютера из кода.
Я не эксперт в области безопасности, но есть ли какой-нибудь способ избежать этого? Или этот подход неверен?
Комментарии:
1. Я тоже не эксперт, но я думаю, что javax.crypto может вам помочь
2. «на iOS приложение поставляется в виде двоичного файла, поэтому никто не может выполнить обратное проектирование»: явно неверное предположение.
3. хорошо, но не так просто, как Android, по крайней мере
4. вы можете создать определенную конечную точку для возврата этих сведений и сохранить их в sqlcipher, или вы можете использовать одноразовый пароль
5. @PierGiorgioMisley Я частично согласен с вашим последним комментарием. Мое возражение против вашего первого комментария заключалось в том, что мне пришлось бы предоставить конечную точку, которая является общедоступной и легко просматриваемой через MITM, даже с HTTPS. Вместо этого в моей текущей реализации нет общедоступных конечных точек, поэтому вы не можете получить эти учетные данные, прослушивая сеть… Я думаю 🙂