Выбор ответа Junior Безопасность мобильных приложений спрашивают часто обновлено
Секреты в коде мобильного приложения
Вопрос
Можно ли хранить в мобильном приложении секретный ключ стороннего API (например, платёжного)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: бинарник можно распаковать и достать ключ; секретное делает сервер, клиенту короткие токены. Всё, что поставляется в приложении, доступно атакующему: строки извлекаются из бинарника, трафик перехватывается, код декомпилируется.
Варианты ответа
- Да, если ключ обфусцирован и собирается из частей во время выполнения
- Да, если положить его в Keychain при сборке: оттуда его не достать без пароля устройства
- Да, если приложение только для iOS: бинарник из App Store зашифрован FairPlay и не распаковывается
- Нет: бинарник можно распаковать и достать ключ; секретное делает сервер, клиенту короткие токеныправильный ответ
Разбор
Всё, что поставляется в приложении, доступно атакующему: строки извлекаются из бинарника, трафик перехватывается, код декомпилируется. Обфускация лишь замедляет. Keychain защищает данные пользователя на устройстве, но ключ, вшитый в сборку, туда попадает из того же бинарника. Правильно: секрет на сервере, клиент работает через свой бэкенд или с ограниченными токенами.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.