Чтобы захватить сессию, вам нужно знать ее идентификатор.Вы делаете это либо путем угадывания действительного идентификатора сеанса, либо путем получения его либо с клиента, либо с сервера.
Первый достаточно легко смягчить: чем больше энтропии, тем лучше.Но последнее не может быть смягчено с помощью одной меры, так как идентификатор сеанса может быть открыт / получен несколькими способами:
- , подслушивающим связь между клиентом и сервером
- , пропущенная при передаче через URL(HTTP реферер, файлы журналов и т. Д.)
- Межсайтовый скриптинг (XSS)
Некоторые из них можно исправить довольно легко: можно избежать подслушивания с помощью безопасного канала(то есть HTTPS) и утечки через URL можно избежать путем передачи идентификатора сеанса в файле cookie (с обоими флагами HttpOnly и Secure ).Предотвратить XSS труднее всего, так как вы должны позаботиться о всех исходных пользовательских данных, прежде чем вернуть их обратно клиенту.
Но если вы сделаете это, вы достаточно хорошо защищены от перехвата сеансов.По крайней мере, часть, которую вы можете контролировать как злоумышленник, может получить cookie непосредственно из файла cookie браузера.Но это выходит за рамки ваших возможностей.