Мое приложение iPhone обращается к серверу через API REST-ish. Я использую сеансы, связанные с IP-адресом клиента, чтобы помочь предотвратить захват сеанса. Но я заметил некоторые странные последовательности запросов в моих журналах сервера с определенных клиентских устройств. Случается, что разные URL-адреса моего сервера запрашиваются одним и тем же клиентом с разных IP-адресов. Типичная последовательность выглядит примерно так:Один клиент iPhone, много IP-адресов?
ipaddr1: POST /users/foo/login -- grants a session linked to ipaddr1
ipaddr2: GET /users/foo/resource -- 401 Not Authorized (IP address mismatch in session)
ipaddr1: POST /users/foo/login -- grants a session linked to ipaddr1
ipaddr2: GET /users/foo/resource -- 401 Not Authorized (IP address mismatch in session)
ipaddr1: POST /users/foo/login -- grants a session linked to ipaddr1
ipaddr2: GET /users/foo/resource -- 401 Not Authorized (IP address mismatch in session)
...
и т. Д., Где эти запросы поступают примерно за 3 секунды. Иногда в игре есть даже до 4 ip-адресов!
На стороне клиента я просто использую обычный NSURLConnection
для запроса каждого ресурса, поэтому я не думаю, что это то, что я делаю в своем коде.
Кто-нибудь видел что-нибудь подобное раньше? Может быть, это какая-то странная прокси-игра?
Это правда, что вход происходит через HTTPS, а другие запросы передаются через HTTP. Ваш последний абзац звучит вполне правдоподобно, как причина проблемы. Я мог бы полностью переключиться на HTTPS, но мой сервис - это просто случайная игра, и пароли уже обрабатываются довольно надежно AFAIK. (Обязательно включать знаки пунктуации, никогда не отправляемые в ясную, хранящиеся в виде соленых хэшей.) Даже связывание IP-адреса с сеансом было скорее защитой «уверенного, а почему нет», чем ответом на любую реальную ожидаемую угрозу. Вероятно, я просто отключу этот аспект проверки сеанса. Спасибо за ответ. – n8gray
HTTPS стоит примерно ничего - если вы уже используете HTTPS для запуска сеанса, тогда есть соединение, ожидающее повторного использования. В ЕС также неплохо, если вы обеспокоены соблюдением различных законов защиты данных (например, если вы запрашиваете чье-то «настоящее имя»). –