Фиксация сессии в ASP.NET - PullRequest
       21

Фиксация сессии в ASP.NET

14 голосов
/ 08 марта 2010

Мне интересно, как предотвратить атаки фиксации сеанса в ASP.NET (см. http://en.wikipedia.org/wiki/Session_fixation)

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

Ответы [ 4 ]

16 голосов
/ 10 марта 2010

Делали больше копать в этом. Лучший способ предотвратить атаки с фиксацией сеанса в любом веб-приложении - это выдать новый идентификатор сеанса при входе пользователя в систему.

В ASP.NET Session.Abandon () недостаточно для этой задачи. Microsoft заявляет в http://support.microsoft.com/kb/899918, что: "" При выходе из сеанса cookie-файл идентификатора сеанса не удаляется из браузера пользователя. Следовательно, как только сеанс будет прерван, любые новые запросы к тому же приложению будут использовать тот же идентификатор сеанса, но будет иметь новый экземпляр состояния сеанса . ""

Для этого было запрошено исправление ошибки в https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=143361&wa=wsignin1.0&siteid=210#details

Существует обходной путь для обеспечения генерации новых идентификаторов сеансов, подробно описанный в http://support.microsoft.com/kb/899918, который включает в себя вызов Session.Abandon и последующую очистку cookie идентификатора сеанса.

Было бы лучше, если бы ASP.NET не полагался на разработчиков.

5 голосов
/ 17 марта 2015

В основном просто сделайте это в вашем Login GET методе и вашем Logout методе:

Session.Clear();
Session.Abandon();
Session.RemoveAll();
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
   Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
   Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
3 голосов
/ 08 марта 2010

Если я правильно понял, вы говорите о ... http://en.wikipedia.org/wiki/Session_fixation. Короткий ответ: да, у вас есть много способов, которыми вы также можете защитить свой cookie. Вам не следует использовать сеанс без файлов cookie, и пока вы используете сеансы, убедитесь, что вы также явно сохранили cookie.

Проверьте эту статью ... http://blogs.msdn.com/rahulso/archive/2007/06/19/cookies-case-study-with-ssl-and-frames-classic-asp.aspx

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

0 голосов
/ 08 марта 2010

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

Так что я не уверен, в чем проблема?

...