Какие требования по безопасности важны для приложения
Что проверяют
Смотрите ли вы на безопасность как на набор требований к продукту, а не как на «мы включили HTTPS». Хороший ответ показывает модель угроз: устройство вам не принадлежит, приложение можно разобрать, трафик перехватить. Следом спрашивают про хранение токена и про поведение на рутованном устройстве.
Как отвечать
Опирайтесь на категории OWASP MASVS: хранение, криптография, аутентификация, сеть, платформа, код, устойчивость, приватность.
- сеть: только TLS,
cleartextTrafficPermitted="false"вnetwork_security_config.xml(с Android 9 это и так по умолчанию), пиннинг или Certificate Transparency для критичных доменов; - хранение: ключи в Android Keystore, при наличии StrongBox с аппаратной защитой, доступ к ключу привязывается к биометрии через
setUserAuthenticationRequired. Секретов в коде и вstrings.xmlнет, APK разбирается за минуты; - платформа и IPC: явный
android:exported(обязателен с API 31),PendingIntentсFLAG_IMMUTABLE,FileProviderвместоfile://, App Links, подтверждённые черезassetlinks.json, WebView безaddJavascriptInterface; - аутентификация: короткоживущий access-токен, refresh с ротацией, обрыв всех сессий на сервере. Проверка прав на бэкенде, клиент лишь прячет кнопки;
- устойчивость: R8 с обфускацией, Play Integrity API вместо выключённого SafetyNet Attestation, реакция на root и отладчик,
FLAG_SECUREна чувствительных экранах; - приватность: минимум разрешений, честная карточка Data safety в Google Play, никаких персональных данных в логах, требования 152-ФЗ и GDPR.
Добавьте процесс: проверка зависимостей на уязвимости, обновление SDK, ревью по чек-листу, пентест перед крупным релизом.
Где спотыкаются
Тащат в мобильный ответ веб-угрозы: SQL-инъекции и XSS. В Android они возможны лишь точечно (сырые запросы к SQLite, WebView), и первым пунктом выглядят как заученный список.
Верят в обфускацию как в защиту. R8 усложняет чтение, но строки и логика извлекаются: всё, что должно оставаться тайной, живёт на сервере.
Говорят «шифруем пароль перед сохранением». Пароль на устройстве не хранят, хранят токен, а ключ шифрования берут из Keystore, а не из константы в коде.