Задать вопрос
  • Как правильно проверять, что к серверу за данными обращается именно мое приложение?

    Наиболее популярный способ аутентификации, стойкий к прослушиванию передаваемых данных - challenge-handshake :

    1) сервер формирует случайное неповторяющееся число/строку достаточной длины "nonce" и направляет его клиенту перед каждым очередным запросом;

    2) клиент выполняет SHA-1(key||nonce||key) и отправляет результат или его часть серверу вместе с запросом, где key - секретный ключ (стойкость системы будет зависеть от того, насколько "хорошо" Вы его спрячете в клиенте);

    3) сервер, получив запрос, повторяет вычисление SHA-1(key||nonce||key) с экземпляром key, хранящимся у него на сервере, и если полученный результат совпадает с присланным клиентом - отвечает данными.

    Есть множество модификаций:
    а) Вы можете вместо nonce использовать строку текущего времени с определенными округлениями и уловками;
    б) если параметры запроса достаточно уникальны, то Вы можете банально использовать их самих вместо (вернее сказать, в качестве - ) nonce.

    В обоих этих случаях исчезает первый шаг из описанных выше - а это очень удобно.
    Ответ написан
    3 комментария