Насколько я понимаю, в соответствии с 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" не предназначен для предотвращения непреднамеренного совместного использования пользователями одного и того же состояния сеанса? Если так, то почему среда не генерирует новые идентификаторы сеанса, как ожидалось в этом случае?