Сессия УгонДоверяя X-Forwarded-For "опознать" посетителю
Поэтому у меня есть небольшая проблема. Я пытаюсь определить посетителя, что очень сложно, если не невозможно, с помощью верификаций $ _SERVER, упомянутых в этом вопросе: Preventing session hijacking.
Возможное решение
Чтобы сделать немного сложнее, чем просто копирование куки от клиента A к клиенту B (который, к сожалению, Childsplay), я хочу собрать некоторую информацию и проверить это на что-то я хранится. В моей базе данных я хочу хранить такие вещи, как User-Agent, IP-Address, OS и т. Д. Это я буду шифровать с помощью MCRYPT и хранить. Для сопоставления с пользователем необходимо установить множество переменных, что делает его несколько сложнее, чем просто копирование содержимого cookie для входа в систему.
Проблема
Вот когда начинается моя проблема ... The User-Agent и OS почти, если не полностью идентичны. Причина в том, что это Fat Clients с тем же загрузочным изображением. Другой проблемой является IP. Сервер в Datacenter имеет соединение с офисом. Для наших приложений (даже не доступных извне) IP-адрес для каждого клиента одинаковый. Я узнал, что могу попытаться использовать заголовок X-Forwarded-For, чтобы отличать IP-адреса и, таким образом, сделать пользователя более уникальным.
Что дальше?
Что я хотел бы знать, так это следующее: Как я могу убедиться, что X-Forwarded-For ВСЕГДА устанавливается без каких-либо проблем, к которым имеют доступ клиенты? Что-то нужно добавить туда путем маршрутизации? Наше соединение - https, поэтому я сомневаюсь, что могу просто «впрыснуть» что-то. Кроме того, если я могу добавить что-то подобное, может ли клиентская сторона пользователей сделать это?
клиентов находятся в нашей внутренней сети офиса и приложения (работает в PHP) не доступны из внешнего
В вашей внутренней сети вы сами (или администраторы сети) должны нести ответственность за то, что какая-либо часть в цепочке (какой-то прокси?) Устанавливает заголовок 'X-Forwared-For'. Однако, если пользователь имеет достаточный контроль над клиентом, он может сам установить этот заголовок. Кстати, если вы говорите о ком-то _deliberately_, передавая свой куки-файл сеанса кому-то другому, я бы не назвал этот сеанс «захватом». Поэтому я не совсем уверен против того, какой сценарий именно вы пытаетесь защитить ваше приложение здесь ... – CBroe
Это просто, чтобы убедиться, что система единого входа нельзя злоупотреблять слишком легко из-за ошибок в нашем собственном коде. Вы никогда не знаете, что они делают, отправляя документ document.cookie им самим, например ... Я не предотвращу (слишком много хлопот), краду куки из 1 приложения, но украсть то, что дает доступ ко всем, просто не круто: P –