Безопасно ли вводить их в мой код или они должны храниться на стороне сервера?
Краткий ответ - нет, чтобы сохранить их в коде мобильного приложения и да, чтобы сохранитьони на стороне сервера.
Почему?
Поскольку они будут статическими секретами в коде вашего мобильного приложения, то есть их легко извлечь с помощью любого инструмента обратного инженера,например, использование Mobile Security Framewrok (MSF) для декомпиляции двоичного файла приложения.
Альтернативы?
Что ж, вы можете попробовать запутать код, чтобы сгенерироватьсекреты динамические в мобильном приложении или для хранения секретов в цепочке ключей iOS, но еще раз их можно преобразовать во время выполнения, еще раз с помощью инструмента MSF.
Возможное решение?
Наилучшим подходом является использование службы аттестации мобильных приложений для защиты соединения между мобильным приложением и сервером API, который будет гарантированно работать при запуске.-время, когда ваше приложение не подвергается атаке человека посередине, подделывается, не работает на рутированном или сломанном устройстве, и это тот же самый оригинал, загруженный в магазин приложений.Это делается в фоновом режиме, не влияя на пользовательский опыт с помощью SDK, интегрированного в ваше приложение, и службы, работающей в облаке.
С такими гарантиями нам больше не нужно хранить секреты вмобильное приложение для целей Аутентификации, Аутентичности и Целостности, таким образом, любой доступ к службам третьей части в Приложении теперь может быть делегирован серверу API, который сможет лучше защищать все необходимые секреты для доступа к службам третьей части.как хранение в хранилище.
Службу аттестации мобильных приложений можно найти в Approov (я работаю здесь), который предоставляет SDK для нескольких платформ, включая iOS.Для интеграции также потребуется небольшая проверка кода сервера API для проверки токена JWT.Эта проверка необходима для того, чтобы сервер API мог решать, какие запросы обслуживать, а какие отклонять.