Как дать доступ к моему API для мобильного приложения? - PullRequest
0 голосов
/ 17 января 2019

мне нужно разработать бэкэнд мобильного приложения (IOS swift). Я начал создавать API с Laravel. Но меня беспокоит доступ к моему API: как мне получить доступ к моему API? Я слышал кое-что о ключе Оут и паспорте.

Для моего приложения я хочу:

-user can create an account (i guess it's with JWT)
-user can navigate in my app and start to use it after they create their account.

Я не знаю базовый процесс создания API для частного использования (его будет использовать только мое приложение), какие средства безопасности я должен реализовать и как будет работать создание учетной записи для моего приложения. Thx:)

1 Ответ

0 голосов
/ 21 января 2019

ЧАСТНЫЕ API

не знаю базовый процесс создания API для частного использования (его будет использовать только мое приложение)

Позвольте мне рассказать вам жестокую правду ...

Независимо от того, если у API нет общедоступной документации или если оно защищено какими-либо механизмами секретности или аутентификации, однажды доступ из Интернета уже не является приватным.

Таким образом, вы можете усложнить поиск и доступ к нему, но для того, чтобы действительно привязать его к своему мобильному приложению, вам будет трудно это сделать.

КТО И ЧТО ДОСТУПАЕТ К СЕРВЕРУ API

WHO является пользователем мобильного приложения, которое можно аутентифицировать, авторизовывать и идентифицировать несколькими способами, например, используя потоки OpenID или OAUTH2.

Теперь вам нужен способ определить, ЧТО вызывает ваш API-сервер, и здесь все становится сложнее, чем может показаться большинству разработчиков. ЧТО - это то, что делает запрос к серверу API, действительно ли это ваше подлинное мобильное приложение, или это робот, автоматизированный скрипт или злоумышленник, вручную копающийся в вашем API-сервере с помощью такого инструмента, как Postman?

Хорошо, чтобы определить ЧТО разработчики, как правило, прибегают к API-ключу, который обычно они жестко кодируют в коде своего мобильного приложения, а некоторые прилагают дополнительные усилия и вычисляют его во время выполнения в мобильное приложение, таким образом, становится динамическим секретом в отличие от прежнего подхода, который представляет собой статический секрет, встроенный в код.

ОБРАТНЫЙ ИНЖИНИРИНГ БИНАРНОЕ МОБИЛЬНОЕ ПРИЛОЖЕНИЕ ЛЕГКО

Правда в том, что все, что работает на стороне клиента, может быть реверс-инжиниринг. легко атакующим на устройстве, которым он управляет. Он будет использовать рамки для самоанализа, такие как Frida или xPposed , чтобы перехватывать во время выполнения работающий код мобильного приложения, или будет использовать прокси-инструмент, такой как MiTM Proxy , для просмотра связь между мобильным приложением и сервером API. Обычно их первым шагом в обратном инжиниринге мобильного приложения будет использование Mobile Security Framework для обратного инжиниринга двоичного файла вашего мобильного приложения для извлечения всех статических секретов и выявления векторов атак.

Mobile Security Framework

Mobile Security Framework - это автоматизированная универсальная платформа для ручного тестирования мобильных приложений (Android / iOS / Windows), позволяющая выполнять статический анализ, динамический анализ, анализ вредоносных программ и тестирование веб-API.

Фрида

Внедрите свои собственные сценарии в процессы черного ящика. Подключите любую функцию, следите за крипто-API или отслеживайте частный код приложения, исходный код не требуется. Отредактируйте, нажмите «Сохранить» и мгновенно увидите результаты. Все без шагов компиляции или перезапуска программы.

Экспоузд

Xposed - это фреймворк для модулей, который может изменять поведение системы и приложений, не касаясь каких-либо APK. Это здорово, потому что это означает, что модули могут работать для разных версий и даже ПЗУ без каких-либо изменений (если исходный код не был слишком изменен). Это также легко отменить.

MiTM Proxy

Интерактивный перехватывающий HTTP-прокси с поддержкой TLS для тестеров на проникновение и разработчиков программного обеспечения.

И что теперь ... Я обречен на то, что не могу защитить свой сервер API от злоупотреблений ??? Не тихо, так что ... надежда все еще существует !!!

ВОЗМОЖНОЕ РЕШЕНИЕ

Таким образом, все, что работает на стороне клиента и нуждается в некотором секрете для доступа к API, может быть использовано по-разному, и вы можете узнать больше о этой серии статей о технологиях безопасности Mobile API. В этих статьях вы узнаете, как можно использовать ключи API, токены доступа пользователей, HMAC и TLS Pinning для защиты API и как их можно обойти.

Но меня беспокоит доступ к моему API: как мне получить доступ к моему API? я слышал кое-что о ключе Оут и паспорте.

Для моего приложения я хочу:

-пользователь может создать учетную запись (я думаю, это с JWT) -пользователь может перемещаться в моем приложении и начать использовать его после создания своей учетной записи.

... и как будет работать создание учетной записи для моего приложения.

Laravel Passport - это сервер OAUTH2, поэтому он является хорошим решением для создания и идентификации пользователей, поэтому для решения проблемы WHO использует ваше мобильное приложение и сервер API.

какие средства безопасности я должен реализовать

Для решения проблемы ЧТО обращается к вашему мобильному приложению, вам нужно использовать одно или все решения, упомянутые в серии статей о технологиях безопасности Mobile API, о которых я упоминал выше, и согласились, что они могут только усложнить обход несанкционированного доступа к вашему API-серверу, но не сделать невозможным.

Лучшее решение можно использовать с помощью решения для аттестации мобильных приложений, которое позволит серверу API получать запросы только от подлинного мобильного приложения.

Аттестация мобильного приложения

Используйте решение для аттестации мобильных приложений, чтобы сервер API мог знать, ЧТО отправляет запросы, что позволяет ему отвечать только на запросы от подлинного мобильного приложения.

Роль службы аттестации мобильных приложений состоит в том, чтобы во время выполнения гарантировать, что ваше мобильное приложение не было взломано или не работает на корневом устройстве, запустив SDK в фоновом режиме, который будет взаимодействовать со службой, работающей в облаке. чтобы подтвердить целостность мобильного приложения и работающего устройства.

При успешной аттестации целостности мобильного приложения выдается кратковременный токен JWT, который подписывается с секретом, о котором знают только сервер API и служба аттестации мобильных приложений в облаке. В случае сбоя при аттестации мобильного приложения токен JWT подписывается секретом, которого сервер API не знает.

Теперь приложение должно отправлять при каждом вызове API токен JWT в заголовках запроса. Это позволит серверу API обслуживать запросы только в том случае, если он может проверить подпись и время истечения срока действия в токене JWT и отклонить их, если он не прошел проверку.

Как только секрет, используемый службой аттестации мобильных приложений, не известен мобильному приложению, невозможно восстановить его во время выполнения, даже когда приложение подделано, работает на корневом устройстве или осуществляет связь через соединение, которое является целью человека в средней атаке.

Сервис аттестации мобильных приложений уже существует в виде решения SAAS на Approov (я работаю здесь), который предоставляет SDK для нескольких платформ, включая iOS, Android, React Native и другие. Для интеграции также потребуется небольшая проверка кода сервера API для проверки токена JWT, выпущенного облачной службой. Эта проверка необходима для того, чтобы сервер API мог решать, какие запросы обслуживать, а какие отклонять.

...