Защита от перехвата сессии в ASP.NET - PullRequest
7 голосов
/ 26 мая 2010

Я хотел бы узнать, какая защита от взлома идентификатора сеанса встроена в текущую версию ASP.NET.

Недавно я увидел эту очень информативную статью , в которой объясняется, как можно повысить безопасность сеанса путем реализации дополнительного уровня, который кодирует IP-адрес и заголовок пользовательского агента в идентификатор сеанса. Эти данные затем проверяются при каждом последующем запросе.

Похоже, эта статья была написана для ASP.NET 1.1, поэтому я хотел бы знать, встроено ли что-либо подобное в ASP.NET. Есть ли еще какая-то польза от внедрения такого дополнительного слоя?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 26 мая 2010

Проверьте этот фрагмент из документации по обзору сеанса:

Значения System.Web.SessionState.HttpSessionState.SessionID отправляются в виде открытого текста, как файл cookie или как часть URL-адреса. Злонамеренный пользователь может получить доступ к сеансу другого пользователя, получив значение SessionID и включив его в запросы к серверу. Если вы храните конфиденциальную информацию в состоянии сеанса, рекомендуется использовать SSL для шифрования любого обмена данными между браузером и сервером, который содержит значение SessionID.

http://msdn.microsoft.com/en-us/library/ms178581.aspx

Мне кажется, это означает, что в Session нет защиты, поэтому вам, вероятно, не следует использовать Session в качестве меры безопасности. Вместо этого я бы рекомендовал полагаться на безопасность ASP.NET (аутентификация, авторизация).

Вот статья из группы Patterns & Practices об общих рекомендациях по безопасности для ASP.NET.

http://msdn.microsoft.com/en-us/library/ff649100.aspx

2 голосов
/ 17 февраля 2011

Привет, я также искал способы снизить риск перехвата ID сессии. Я также прочитал статью Джеффа Просиза и подумал, что это может быть полезно; однако, так же, как и вы, я хотел посмотреть, применим ли тот же подход к современным версиям фреймворка (кстати, его электронная почта wicked@microsoft.com не работает)

jkohlhepp, я не согласен с вашим постом (или, может быть, я его не понимаю):

вы, вероятно, не должны использовать Session в качестве меры безопасности. Вместо этого я бы рекомендовал полагаться на безопасность ASP.NET (аутентификация, авторизация)

Насколько мне известно, проверка подлинности asp.net основана на идентификаторах сеансов (кроме файлов cookie, что выглядит хуже: См. Мнение Дино Эспозито )

Итак, это в значительной степени поставило нас туда, где мы начали.

...