Как вы мешаете нескольким клиентам использовать один и тот же идентификатор сеанса? Я спрашиваю об этом, потому что я хочу добавить дополнительный уровень безопасности, чтобы предотвратить захват сеанса на моем веб-сайте. Если хакер каким-то образом идентифицирует другой идентификатор сеанса пользователя и делает запросы с этим SID, как я могу обнаружить, что разные клиенты используют один SID на сервере, а затем отклоняют попытку захвата?
ИЗМЕНИТЬ
Я принял ответ Gumbo после тщательного рассмотрения, потому что пришел к осознанию того, что то, что я прошу, невозможно из-за ограничений HTTP-протокола без состояния. Я забыл о том, что является, пожалуй, самым основополагающим принципом HTTP, и теперь, когда я думаю об этом вопросе, кажется немного тривиальным.
Позвольте мне уточнить, что я имею в виду:
После того, как пользователь A войдет в систему на example.com, ему будет предоставлен случайный идентификатор сеанса, для простоты, пусть это будет "abc123". Этот идентификатор сеанса хранится как файл cookie на стороне клиента и проверяется с помощью сеанса на стороне сервера, чтобы гарантировать, что пользователь, который вошел в систему, остается включенным при переходе с одной веб-страницы на другую. Конечно, этот куки файл не должен существовать, если HTTP не был апатридом. По этой причине, если пользователь B похищает пользователя SID и создает на своем компьютере файл cookie со значением "abc123", он успешно захватил сеанс пользователя A, но сервер просто не может законно распознать, что пользователь B запрос отличается от запросов User A, и поэтому у сервера нет причин отклонять запрос. Даже если мы должны перечислить сеансы, которые уже были активны на сервере, и попытаться выяснить, имеет ли кто-либо доступ к уже активному сеансу, как мы можем определить, что это другой пользователь, который получает доступ к сеансу незаконно, а не тот же пользователь который уже вошел в систему с идентификатором сеанса, но просто пытается сделать с ним другой запрос (т.е. перейти на другую веб-страницу). Мы не можем. Проверка агента пользователя? Может быть подделано, но тем не менее хорошо, как защита в глубине. Айпи адрес? Может измениться по законным причинам - но вместо того, чтобы вообще не проверять IP-адрес, я предлагаю проверить что-то вроде первых двух октетов IP, так как даже пользователь в сети с данными, который постоянно меняет IP по совершенно законным причинам обычно будут иметь только два последних октета изменения IP-адресов.
В заключении, HTTP-статус без гражданства осуждает нас за то, что мы никогда не смогли полностью защитить наши сайты от захвата сеанса, но хорошие методы (например, предоставленные Gumbo) будут достаточно хороши, чтобы предотвратить значительное большинство сеансовых атак, Попытка защитить сеансы от угона, отказавшись от нескольких запросов одного и того же SID, поэтому просто смехотворна и победит целую цель сеансов.