Безопасное хранение данных на устройстве
Вопрос
Какие данные и как вы храните на устройстве с точки зрения безопасности?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Токены и ключи только в Keychain/Keystore
Персональные данные: минимизация, шифрование базы при необходимости (SQLCipher, шифрование MMKV)
Ничего секретного в бандле и `EXPO_PUBLIC_*`
Очистка данных при выходе из аккаунта
Исключение чувствительного из резервных копий и логов
Угрозы: рутованные устройства, резервные копии, логи, скриншоты
Что могут спросить следом
- Как защитить экран с данными карты от скриншотов?
- Что делать при обнаружении рута?
Разбор
Образцовый ответ: «Исхожу из того, что всё на устройстве может быть прочитано, если устройство скомпрометировано. Поэтому токены храню только в Keychain и Keystore через защищённое хранилище, а секретов сервиса в приложении нет вообще: всё из бандла считается публичным. Персональных данных храню минимум, а если их много и они чувствительные, шифрую базу, например SQLCipher, ключ в Keystore. При выходе из аккаунта стираю локальные данные и токены и отвязываю push-токен. Слежу, чтобы чувствительное не попадало в логи и аналитику. Для экранов с платёжными данными можно запретить скриншоты на Android и скрывать содержимое в переключателе приложений»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.