ASP.NET_SessionId против .ASPXAUTH, зачем нам обоим?

Не можем ли мы просто сохранить в сеансе, если пользователь вошел в систему или нет, и избавиться от .ASPXAUTH?

Ответ 1

ASP.Net_SessionId - это файл cookie, который используется для идентификации пользователей

Затем в следующем действии первое имя может быть получено из сеанса:

var firstName = Session["FirstName"];

ASP.Net_SessionId определяет сеанс для этого запроса пользователей. Другой пользователь отправит другой файл cookie и, таким образом, Session["FirstName"] будет придерживаться другого значения для этого другого пользователя.

ASPXAUTH - это файл cookie для идентификации, если пользователь (то есть имеет личность проверено). Например, действие контроллера может определить, предоставил ли пользователь правильные учетные данные и, если да, выдает файл cookie аутентификации :

FormsAuthentication.SetAuthCookie(username, false);

Затем вы можете проверить, разрешено ли пользователю выполнять действие, используя атрибут , который проверяет наличие ASPXAUTH cookie.

Итак, в общем, файлы cookie существуют для двух разных целей. Один из них определяет состояние сеанса пользователей и определяет, аутентифицирован ли пользователь.

Чтобы ответить на ваш вопрос, да, вы можете избавиться от cookie ASPXAUTH и просто использовать сеанс для идентификации пользователя (я видел это в старых классических приложениях asp), но я бы не рекомендовал его, Гораздо лучше иметь более четкое разделение проблем и при необходимости использовать соответствующий метод. У сеанса и аутентификации будут установлены собственные значения тайм-аута. Используя сеанс для аутентификации, вы будете иметь только один тайм-аут. Я не уверен, хотя, если есть какие-либо последствия для безопасности при простое использование сеанса для аутентификации, но все же я бы сохранил их отдельно.

Ответ 2

.NET выдает совершенно другой файл cookie с именем ASP.NET_SessionId для отслеживания состояния сеанса.

Файл cookie ASPXAUTH используется для определения подлинности пользователя.

Таким образом, это две разные концепции, то есть управление состоянием сеанса и управление аутентификацией с использованием проверки подлинности с помощью формы.

Если вы используете Session для аутентификации и забываете аутентификацию формы, вы избавитесь от .ASPXAUTH

Ответ 3

Оба требуются, используя либо следующую уязвимость:

* ASP.NET_SessionId Alone: ​​Фиксация сеанса

* Forms Authentication Cookie Alone: ​​Cant Завершает аутентификацию на сервере

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

* Loosely Coupled ASP.NET_SessionID и файлы cookie для проверки подлинности форм: все еще уязвимы

исх: http://blog.securityps.com/2013/06/session-fixation-forms-authentication.html

Ответ 4

Состояние сеанса и аутентификация не имеют ничего общего друг с другом. Вы можете использовать один без другого.