Главное Авторские колонки Вакансии Вопросы
Выбор редакции:
126 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Безопасность мобильных приложений в 2025: что реально работает и как избежать типовых уязвимостей

По оценкам Positive Technologies, до 75% мобильных приложений содержат критические уязвимости: от хардкода ключей до нешифрованных баз данных. В условиях роста числа атак и ужесточения политики стора любая уязвимость может стоить не только репутации, но и удаления приложения.
Мнение автора может не совпадать с мнением редакции

В Инстадев мы закладываем безопасность ещё на этапе архитектуры, а не «прикручиваем» потом — это критично, потому что большинство уязвимостей дешевле предотвратить, чем чинить в продакшене.


Безопасность в мобильных приложениях

Основные блоки мобильной безопасности

1. API и сеть

  1. Используем только https://, блокируем cleartext-трафик (android:usesCleartextTraffic="false")
  2. Включаем SSL pinning по SHA-256 публичного ключа сервера
  3. Проверяем и ротационно обновляем сертификаты
  4. Добавляем контроль числа запросов (rate limit)
  5. Запрещаем отправку токенов без Authorization-заголовка

2. Хранение данных

  1. Все токены и ключи — в flutter_secure_storage
  2. Локальные БД — через SQLCipher, с шифрованием файла
  3. Очистка сессии при выходе пользователя
  4. Никаких секретов и ключей в коде или репозитории — даже в .env на проде

3. Аутентификация и авторизация

  1. Политика паролей: длина 8 — 12+, цифры, символы, заглавная
  2. MFA на чувствительные действия (например, смена e-mail или платёжные операции)
  3. OAuth2/OIDC с корректной обработкой токенов (refresh при 401)
  4. Привязка сессий к устройству — доп. слой защиты

4. Код и приложение

  1. Обфускация (—obfuscate, ProGuard/R8, —split-debug-info)
  2. Удаление логов и отладочной информации
  3. Проверка подписи приложения и источника установки
  4. RASP (Runtime Application Self-Protection): защита от джейлбрейка, рута, отладки, хука

5. WebView и ввод

  1. Запрещаем JS, если не нужен (JavascriptMode.disabled)
  2. Навигация только на белый список доменов
  3. Запрещаем отладку WebView
  4. Санитизация ввода (особенно если рендерится HTML)
  5. Отключаем копипаст и автозаполнение в чувствительных полях

6. Разрешения и функции устройства

  1. Запрашиваем только нужные разрешения
  2. Скрываем экран от скриншотов и записи (FLAG_SECURE)
  3. Блокируем работу на рут/джейл устройствах и в эмуляторах
  4. Защищаем от наложений (tapjacking) и фонового снятия данных

7. Зависимости и обновления

  1. flutter pub outdated и flutter pub upgrade регулярно
  2. Проверка уязвимостей (Snyk, OWASP Dependency-Check)
  3. Удаление неиспользуемых пакетов

8. Мониторинг и обнаружение угроз

  1. Crashlytics/Sentry: не только падения, но и аномальное поведение
  2. Логи без PII (токены, пароли, личные данные)
  3. Сигналы безопасности — алерты и автоотключение сессий

Мини-чек-лист от Инстадев

  1. HTTPS + SSL pinning
  2. secure storage
  3. MFA и политика паролей
  4. обфускация и удаление логов
  5. WebView — только белые домены
  6. минимум разрешений и FLAG_SECURE
  7. проверка уязвимостей зависимостей
  8. краш-репорты и сигналы безопасности

Мы внедряем всё это до запуска MVP — это снижает время прохождения модерации и экономит в среднем 150–300 тыс. ₽ на доработках в продакшене.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.