ASP.NET MVC2 - можно ли использовать сессию для хранения статуса входа пользователя - PullRequest
1 голос
/ 28 февраля 2012

Я использую ASP.NET MVC2, и мне нужно сохранить статус входа пользователя, чтобы указать, вошел ли он в систему, и показать некоторые личные данные.

Я просто добавил идентификатор пользователя в сеансе Session.Add("UserID", user.ID.ToString());, а затем перенаправил на страницу user, которая получает идентификатор пользователя string userID = Session["UserID"].ToString();, и, если она существует, извлекает данные из БД и показывает их пользователю.

Насколько я знаю, данные сеанса хранятся на стороне сервера, поэтому я подумал, что использовать этот метод довольно безопасно. Однако я зарегистрировался в Chrome, и он создает какое-то печенье, которое вызывает у меня сомнения.

Может кто-нибудь сказать мне, если этот метод безопасен?

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

Файл cookie, который создается (а), зашифрован и (б) не содержит фактических данных, а скорее идентификатор сеанса, используемый для получения правильного сеанса для потока, обрабатывающего запрос.Это совершенно разумный и безопасный способ сохранить данные.Я считаю, что cookie по умолчанию является HttpOnly (вы должны это проверить) и не должен подвергаться воздействию скриптов в браузере.Если это не HttpOnly, вам следует настроить его так (используя директиву httpCookies) - из лучших правил следует, что файлы cookie должны быть HttpOnly, если это не требуется специально для использования клиентом напрямую.

0 голосов
/ 28 февраля 2012

Вы можете записать cookie.Это совершенно нормально, кстати.Например, при использовании федеративной аутентификации ваш токен SAML (или другой) сохраняется в зашифрованном файле cookie.

Даже если кто-то перехватит ваше печенье, он не сможет его прочитать.Чтобы предотвратить повреждение данных - подпишите их.Также вы можете добавить к нему URI владельца куки и проверить его.

Совершенно так же, как мнение tvanfosson.Просто заметил это =) Но все равно выложу.

0 голосов
/ 28 февраля 2012

ASP .NET MVC поддерживает состояние сеанса, предоставляя клиенту уникальный ключ (идентификатор сеанса) в начале сеанса, который сохраняется в файле cookie HTTP.Идентификатор сеанса отправляется на сервер при каждом запросе.

Вы можете установить

<system.web>
  <sessionState cookieless="true" />
</system.web>

, тогда идентификатор сеанса будет передан в URL, что является менее безопасным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...