Проверка приложения iOS - PullRequest
6 голосов
/ 17 мая 2011

У нас есть приложение для iOS, которое взаимодействует с различными веб-сервисами на сервере.Однако бэкэнд хочет проверить, что поступающий к нему запрос поступает от нашего действующего приложения для iOS, а не от атаки с повтором или атаки «человек посередине».В конечном итоге все наши звонки будут изменены на https.Тем не менее, есть ли способ, которым бэкэнд может проверить, что запрос поступил от нашего законного приложения?Мы думали об использовании криптографического одноразового номера с каждым запросом, но он все равно был бы подвержен атаке «человек посередине».Существует ли обмен сертификатами между приложением iOS и сервером?

Ответы [ 5 ]

3 голосов
/ 17 мая 2011

Поддержка TLS и SSL аутентификация клиента с использованием сертификатов.NSStream может поддерживать аутентификацию на стороне клиента, но я не смог найти способ сделать это без перехода к использованию OpenSSL для фактической реализации.* ASIHTTPRequest поддерживает клиентских сертификатов начиная с версии 1.8, поэтому не стоит суетиться в его реализации.

3 голосов
/ 17 мая 2011

как насчет использования схемы закрытого / открытого ключа, чтобы приложение iOS могло подписывать каждый отправленный запрос?

если схема с закрытым / открытым ключом может показаться пугающей, ту же идею «подписать» ваши запросы можно легко реализовать, хэшируя ваш crypto nonce, используя sha1 , sha2 или другие криптографические алгоритмы хеширования. это было бы довольно легко реализовать (реализация доступна), быстро и обеспечило бы более высокий уровень безопасности.

1 голос
/ 17 мая 2011

Это общая проблема с http, а не проблема с iOS. Фактически, это та самая проблема, которую https призван решить или, по крайней мере, смягчить. Вы можете подписать запрос, использовать HMAC для проверки подлинности сообщения, использовать дайджест-проверку подлинности и т. Д., Но пока вы используете http, атака «человек посередине» не может быть легко обнаружена. Тратьте свое время на переход на https так быстро, как только сможете.

1 голос
/ 17 мая 2011

Я бы предложил использовать OAuth.Он хорошо известен, понятен и в значительной степени безопасен, и в случае, если кто-то получит ваш токен, вы можете выпустить новый с обновлением приложения и отозвать старый.

0 голосов
/ 18 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...