Определение того, пришел ли запрос из приложения для iPhone

У меня есть приложение для iPhone, которое связывается с сервером (я владею им и написал код). Мне нужно как-то определить, пришел ли запрос на мой сервер с iPhone (или с любого мобильного устройства, на котором запущено приложение, которое я написал в этом отношении). По сути, я хочу, чтобы только приложения, которые я написал, взаимодействовали с сервером, и мне нужен способ проверить это. Поскольку я пишу приложения, я могу изменять заголовки и все, что мне не нужно.

Я немного прочитал о шифровании с открытым ключом, но не думаю, что это сработает. Если бы я послал какое-то секретное хешированное слово в своих заголовках, чтобы проверить это, не может ли какая-то внешняя сторона просто получить эти заголовки и использовать те же самые в своем запросе?

3 ответа

Решение

Вы можете использовать контрольную сумму. Допустим, у вас есть что-то вроде: тема даты

и вычислите контрольную сумму, используя, скажем, MD5 (дата + "строка" + тема), и вы точно так же рассчитаете MD5 на сервере. Если они совпадают, они из мобильного клиента.

Это будет работать, пока кто-то не выяснит ваш алгоритм.

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

Затем ваше приложение выполняет некоторый алгоритм для этого сообщения, чтобы "зашифровать" его и отправить обратно на сервер, а затем сервер может проверить его. Таким образом, нечего перехватывать и использовать, не зная вашего "шифрования".

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

Вы можете просто использовать HTTP Basic аутентификацию, если вам не нужно что-то более безопасное.

Другие вопросы по тегам