Как передать объекты состояния сеанса ASP.NET? - PullRequest
0 голосов
/ 18 января 2012

Чтобы смягчить потенциальные атаки фиксации / перехвата сеанса, мы должны иметь возможность передавать состояние сеанса ASP.NET из одного идентификатора сеанса в другой после успешного входа пользователя. У пользователя есть важная информация о сеансе до входа, который требуетсядля передачи, поэтому мы не можем просто вызвать Session.Abandon или Response.Cookies.Add (новый HttpCookie ("ASP.NET_SessionId", "")), так как все состояние сеанса потеряно.Мы можем использовать System.Web.SessionState.SessionIDManager для вызова CreateSessionID (), а затем SaveSessionID () для создания нового идентификатора, но опять-таки предыдущее состояние теряется при следующем запросе.Поэтому мой вопрос в основном состоит в том, как перенести / сопоставить состояние сеанса из идентификатора сеанса до входа в систему с идентификатором сеанса после входа в систему.

1 Ответ

1 голос
/ 18 января 2012

Вокруг несколько статей и постов, в которых объясняются потенциальные проблемы с использованием состояния сеанса. Наиболее очевидной является проблематичная поддержка многосерверных сред.

Если вы храните элементы, которые вы в настоящее время помещаете в Session [], в базу данных или используете сеансы на основе SQL, «передача» - это просто вопрос связи пользователя или соединения с определенным набором записей.

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

...