Как избежать перехвата сеанса в ASP.NET

Недавно я прочитал статью о том, как сделать сеансы ASP.NET более безопасными здесь , и сначала это кажется действительно полезным.

Раньше я сохранял IP-адрес пользователя в сеансе, затем проверяя в каждом последующем запросе, что запрашивающий IP-адрес был равен сохраненному IP.

Код в статье также защищает сеанс, проверяя IP-адрес, за исключением того, что он хранит хешированный код аутентификации сообщения, содержащий IP пользователя как часть файла cookie сеанса. Он создает хешированный MAC дважды за каждый запрос, что, как я полагаю, немного замедлит работу.

Я уже вижу потенциальную ошибку в их коде: если бы вы каким-то образом получили ключ, используемый для генерации MAC, затем вы можете сгенерировать действительный MAC-адрес со своим собственным IP-адресом - вы бы не Мне даже приходится подделывать IP-адрес, на котором был запущен сеанс.

Это похоже на слишком сложное решение простой проблемы, которая не только требует больших накладных расходов, но и более уязвима для атак, чем тривиальный метод - если только я не m полностью упускает суть.

Итак, почему этот подход может быть более безопасным, чем более простой подход, который я использовал?

В качестве небольшого отступления автор также заявляет, что вы не должны использовать весь IP-адрес в сравнении, поскольку IP-адреса некоторых пользователей меняют каждый запрос, если они находятся за прокси. Это все еще так, если вы проверяете X_FORWARDED_FOR?

Спасибо!

6
задан sjmeverett 24 February 2011 в 16:30
поделиться