регенерацияExpiredSessionId не работает, как ожидалось - PullRequest
4 голосов
/ 25 декабря 2008

Насколько я понимаю, в соответствии с MSDN, что Когда-либо идентифицируется идентификатор сеанса, если истек срок действия идентификатора сеанса с истекшим сроком действия, заданный клиентом, *1001* Когда-либо идентифицируется идентификатор сеанса с истекшим сроком действия Однако, похоже, что это не работает, как описано.

Допустим, у вас есть приложение, настроенное следующим образом:

<sessionState 
     cookieless="AutoDetect" 
     regenerateExpiredSessionId="true" />

И где-то еще у вас есть ссылка на страницу в том приложении, в которую встроен просроченный идентификатор сеанса:

<p><a href="http://localhost/SessionStateTest/(S(3gxng155isp0ocvhveoklnqe))/Default.aspx">Here is a link!</a></p>

Если браузер, в котором файлы cookie имеют поддержку , а не , нажимает на эту ссылку, идентификатор сеанса не переиздается. Он рециркулирует истекший идентификатор из URL-адреса и создает новый сеанс. с этим старым удостоверением личности.

Конечно, если несколько браузеров без файлов cookie нажимают на ссылку одновременно, они ВСЕ используют один и тот же ID сеанса с истекшим сроком действия, что, очевидно, является проблемой безопасности.

Разве carrateExpiredSessionId = "true" не предназначен для предотвращения непреднамеренного совместного использования пользователями одного и того же состояния сеанса? Если так, то почему среда не генерирует новые идентификаторы сеанса, как ожидалось в этом случае?

1 Ответ

1 голос
/ 17 января 2009

Вы уверены, что ваша сессия действительно истекает?

Если вы используете проверку подлинности с помощью форм, срок действия билета может истечь в другое время, чем в сеансе. (становится все более запутанным, когда вы добавляете скользящий выдох в микс)

Чтобы проверить с включенным Cookie, просто посмотрите на URL, когда вы думаете, что сессия истекла ... если вторая часть билета URL "F (xydUI ....)" изменится, когда вы снова войдете в систему, но "S (dysXy ...) "остается прежним, вы знаете, что ваша сессия только возобновляется и еще не полностью истекла.

Надеюсь, это поможет

...