Когда мы говорим о защите приложения iOS, мы часто забываем защищать самую критическую конфиденциальную информацию, такую как секрет, ключ, токен, encryptionKey. Эта информация хранится в двоичном формате iOS. Таким образом, ни один из ваших протоколов безопасности на стороне сервера не поможет вам.
Есть много предположений о том, что мы не должны хранить такую информацию в приложении, а хранить на сервере и получать ее через SSL-защищенный веб-сервис. Но это невозможно для всех приложений. Напр. если мое приложение не нуждается в веб-сервисе вообще.
В iOS-приложении у нас есть следующая опция для хранения информации.
- UserDefault: не подходит для этого случая
- Строка Константа: не подходит для этого случая. Может быть наоборот инженер для извлечения или просто использовать команду strings
- Защищенная база данных. Храните в защищенной и зашифрованной базе данных. Но снова возьмите на себя ответственность за сохранение имени и пароля базы данных.
- KeyChain. Лучше всего хранить критическую информацию. Но мы не можем сохранить информацию перед установкой приложения. Чтобы сохранить в цепочке ключей, сначала нужно открыть приложение, прочитать из какого-то источника и сохранить в цепочке ключей. Не подходит для нашего дела.
- Custom Hash String Constant. Не использовать тайну, токен, ключ от поставщика услуг (mixpanel, paypal), вместо этого использовать хеш-версию этой информации из настраиваемого ключа. Это также не идеальное решение. Но добавьте сложности во время взлома.
Просьба отправить какое-нибудь большое решение этой проблемы.