Выбор ответа Junior Безопасность мобильных приложений спрашивают часто обновлено

Секреты в коде мобильного приложения

Вопрос

Можно ли хранить в мобильном приложении секретный ключ стороннего API (например, платёжного)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет: бинарник можно распаковать и достать ключ; секретное делает сервер, клиенту короткие токены. Всё, что поставляется в приложении, доступно атакующему: строки извлекаются из бинарника, трафик перехватывается, код декомпилируется.

Варианты ответа

  1. Да, если ключ обфусцирован и собирается из частей во время выполнения
  2. Да, если положить его в Keychain при сборке: оттуда его не достать без пароля устройства
  3. Да, если приложение только для iOS: бинарник из App Store зашифрован FairPlay и не распаковывается
  4. Нет: бинарник можно распаковать и достать ключ; секретное делает сервер, клиенту короткие токеныправильный ответ

Разбор

Всё, что поставляется в приложении, доступно атакующему: строки извлекаются из бинарника, трафик перехватывается, код декомпилируется. Обфускация лишь замедляет. Keychain защищает данные пользователя на устройстве, но ключ, вшитый в сборку, туда попадает из того же бинарника. Правильно: секрет на сервере, клиент работает через свой бэкенд или с ограниченными токенами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.