Современное мобильное приложение хранит и обрабатывает массу чувствительной информации: логины, платёжные данные, геолокацию, переписку, сведения о здоровье. Утечка или компрометация таких данных бьёт по пользователям, репутации продукта и бюджету компании. Безопасность данных в разработке мобильных приложений нельзя «прикрутить» перед релизом, её закладывают с первых экранов прототипа. В статье разберём, какие угрозы реальны, как хранить и передавать информацию, как выстроить аутентификацию и что проверять перед выпуском версии.
Почему защита данных в мобильной разработке критична
Смартфон отличается от веб-страницы тем, что код приложения находится в руках пользователя, а иногда и злоумышленника. Приложение можно распаковать, изучить, изменить и запустить на устройстве с повышенными привилегиями. Кроме того, телефон постоянно переключается между сетями, теряется, попадает в чужие руки и обновляется нерегулярно.
Добавьте к этому требования законодательства о персональных данных: оператор обязан обеспечивать конфиденциальность, ограничивать объём собираемой информации и уведомлять об инцидентах. Штрафы и потеря доверия аудитории обходятся дороже, чем своевременная проработка защиты.
Модель угроз: от чего именно мы защищаемся
Прежде чем выбирать инструменты, определите, что вы защищаете и от кого. Такой подход называется моделированием угроз, и он экономит время команды.
Основные сценарии
- Потеря или кража устройства: доступ к локальным файлам, кэшу и базам данных.
- Перехват трафика в общедоступных сетях Wi-Fi или через поддельные точки доступа.
- Вредоносные приложения на том же устройстве, пытающиеся прочитать общие данные.
- Анализ и модификация сборки: поиск ключей, обход проверок, подмена логики.
- Ошибки на стороне сервера: слабая авторизация API, избыточные ответы, небезопасные интеграции.
Для каждого сценария оцените вероятность и ущерб. Данные о платежах и медицинские сведения требуют максимального уровня защиты, а настройки темы оформления не нуждаются в шифровании.

Безопасное хранение данных на устройстве
Главное правило: не хранить на телефоне то, без чего можно обойтись. Каждый сохранённый локально пароль или токен увеличивает поверхность атаки.
- Используйте системные хранилища ключей: Keychain в iOS и Android Keystore. Они защищают секреты на аппаратном уровне, если устройство это поддерживает.
- Не складывайте токены и пароли в обычные настройки, текстовые файлы или незащищённые базы данных.
- Шифруйте локальные базы и файлы с чувствительным содержимым, а ключ получайте из защищённого хранилища.
- Очищайте кэш и временные файлы, особенно после выхода из аккаунта.
- Следите за журналами: в логах не должно быть токенов, персональных данных и содержимого запросов.
- Закрывайте превью экрана в списке недавних приложений для банковских и медицинских разделов.
Отдельное внимание уделите резервным копиям. Если приложение хранит особо чувствительные сведения, исключите их из автоматического резервного копирования или защитите шифрованием.
Защита данных при передаче по сети
Любой обмен с сервером должен идти по защищённому каналу. Шифрование транспорта через актуальные версии TLS сегодня считается обязательным минимумом, а передача по открытому HTTP недопустима.
Что сделать на уровне сети
- Включите строгую проверку сертификатов и не отключайте её «на время тестирования».
- Для критичных приложений применяйте закрепление сертификата или открытого ключа (certificate pinning) с продуманным процессом обновления.
- Не передавайте секреты в параметрах адреса: они попадают в журналы серверов и прокладок.
- Ограничивайте срок жизни токенов и подписывайте запросы там, где важна целостность.
- Возвращайте с сервера только те поля, которые нужны экрану, без «лишних» данных.
Помните, что клиентской проверке нельзя доверять полностью. Все правила доступа, лимиты и валидацию дублируйте на сервере.
Аутентификация и управление сессиями
Надёжная аутентификация снижает риск того, что данные окажутся у постороннего даже при утере телефона.
- Используйте стандартные протоколы авторизации, например OAuth 2.0 с PKCE, вместо самописных схем.
- Храните короткоживущий access-токен и защищённый refresh-токен, предусмотрите их отзыв.
- Подключите биометрию через системные средства, не сохраняя сами биометрические данные.
- Для важных операций запрашивайте повторное подтверждение: код, биометрию или пароль.
- Завершайте неактивные сессии и давайте пользователю возможность выйти со всех устройств.
Не храните пароль на устройстве даже в зашифрованном виде, если можно обойтись токеном. Вводите ограничение на число попыток и фиксируйте подозрительные входы.
Защита кода, зависимостей и сборки
Сборку приложения можно проанализировать, поэтому не размещайте в ней секреты: ключи API с широкими правами, пароли к базам, закрытые ключи. Всё, что должно оставаться тайной, живёт на сервере.
- Обфускация и минификация затрудняют анализ кода, хотя и не заменяют серверные проверки.
- Контроль целостности и проверка подлинности установленной сборки помогают выявлять подмену.
- Аудит сторонних библиотек: подключайте только поддерживаемые пакеты и регулярно обновляйте их.
- Минимум разрешений: запрашивайте доступ к камере, контактам и геолокации только тогда, когда это действительно нужно, и объясняйте зачем.
- Безопасные межприложенческие вызовы: проверяйте входящие ссылки и данные из других приложений.
Особую осторожность проявляйте с аналитическими и рекламными SDK: они получают доступ к данным в рамках вашего приложения, и ответственность за это лежит на вас.
Тестирование и процессы безопасной разработки
Даже хорошая архитектура не спасёт без регулярных проверок. Встройте безопасность в обычный цикл разработки.
Практический чек-лист перед релизом
- Статический анализ кода и поиск секретов в репозитории при каждой сборке.
- Проверка зависимостей на известные уязвимости.
- Ручное и автоматизированное тестирование по чек-листам OWASP MASVS и MASTG.
- Пентест перед крупными релизами, особенно при работе с платежами.
- Проверка отсутствия отладочных режимов и тестовых точек входа в рабочей сборке.
- План реагирования на инциденты: кто принимает решения, как быстро отзываются ключи и выпускается исправление.
Обучайте команду: разработчики, тестировщики и аналитики должны одинаково понимать, какие данные считаются чувствительными. Хорошо работает практика ревью с вопросом «что будет, если это окажется в чужих руках?».
Вывод
Безопасность данных в мобильных приложениях строится на нескольких слоях: минимизация сбора, защищённое хранение, шифрованная передача, надёжная аутентификация, чистая сборка и постоянное тестирование. Ни одна мера не работает в одиночку, но вместе они делают атаку дорогой и малопривлекательной. Начните с модели угроз, закройте самые рискованные места и превратите проверки в привычную часть процесса разработки.
