wake-up-neo.com

ASP.NET_SessionId vs .ASPXAUTH Warum brauchen wir beide?

Können wir nicht einfach in der Sitzung speichern, wenn der Benutzer angemeldet ist oder nicht und die .ASPXAUTH loswerden?

14
Daniel Gartmann

ASP.Net_SessionIdist ein Cookie, mit dem die Benutzer session auf dem Server identifiziert werden. Die Sitzung ist ein Bereich auf dem Server, in dem Daten zwischen http-Anforderungen gespeichert werden können.

Beispielsweise kann die Controller-Aktion Folgendes ausführen:

Session["FirstName"] = model.FirstName;

In einer nachfolgenden Aktion kann dann der Vorname aus der Sitzung abgerufen werden:

var firstName = Session["FirstName"];

Die ASP.Net_SessionId identifiziert die Sitzung für diese Benutzeranforderung. Ein anderer Benutzer sendet ein anderes Cookie, und Session["FirstName"] enthält einen anderen Wert für diesen anderen Benutzer.

ASPXAUTHist ein Cookie, um zu identifizieren, ob der Benutzer authentifiziert ist (dh seine Identität wurde verifiziert). Beispielsweise kann eine Controller-Aktion feststellen, ob der Benutzer die korrekten Anmeldeinformationen angegeben hat, und wenn dies der Fall ist, wird ein Authentifizierungs-Cookie ausgegeben. using :

FormsAuthentication.SetAuthCookie(username, false);

Sie können später überprüfen, ob der Benutzer zur Ausführung einer Aktion berechtigt ist. Verwenden Sie dazu das [Authorize] - Attribut, das auf das Vorhandensein des Cookies ASPXAUTH prüft.

Zusammengefasst sind die Cookies also zu zwei verschiedenen Zwecken vorhanden. Eine zum Bestimmen des Sitzungsstatus des Benutzers und eine zum Feststellen, ob der Benutzer authentifiziert ist.

Um die Antwort auf Ihre Frage zu vervollständigen, können Sie den ASPXAUTH-Cookie entfernen und einfach die Sitzung verwenden, um den Benutzer zu identifizieren (ich habe gesehen, dass dies in älteren klassischen ASP-Anwendungen der Fall ist), aber ich würde es nicht empfehlen. Es ist viel besser, die Bedenken sauberer zu trennen und erforderlichenfalls die geeignete Methode zu verwenden. Für die Sitzung und die Authentifizierung werden eigene Timeout-Werte festgelegt. Wenn Sie die Sitzung zur Authentifizierung verwenden, haben Sie nur ein einzelnes Timeout. Ich bin mir zwar nicht sicher, ob es Sicherheitsaspekte gibt, wenn nur die Sitzung zur Authentifizierung verwendet wird, aber ich würde sie immer noch getrennt halten.

22
Dangerous

.NET gibt ein völlig anderes Cookie namens ASP.NET_SessionId aus, um den Sitzungsstatus zu verfolgen.

Das ASPXAUTH-Cookie wird verwendet, um festzustellen, ob ein Benutzer authentifiziert ist.

Dies sind zwei unterschiedliche Konzepte, d. H. Sitzungsstatusverwaltung und Authentifizierungsverwaltung unter Verwendung der Formularauthentifizierung.

Wenn Sie Session zur Authentifizierung verwenden und die Formularauthentifizierung vergessen, werden Sie .ASPXAUTH los

4
Nipun Ambastha

Beide sind erforderlich und führen zu folgenden Schwachstellen:

* ASP.NET_SessionId Alone: ​​Sitzungsfixierung

* Forms Authentication Cookie Alone: ​​Authentifizierungs-Token auf dem Server kann nicht beendet werden

Außerdem müssen Sie sicherstellen, dass sie ordnungsgemäß miteinander verbunden sind. Andernfalls birgt die Konfiguration auch ein Risiko: 

* Locker gekoppelte ASP.NET_SessionID- und Formularauthentifizierungs-Cookies: Immer noch anfällig

ref: http://blog.securityps.com/2013/06/session-fixation-forms-authentication.html

1
user2480156

Sitzungsstatus und Authentifizierung haben nichts miteinander zu tun. Sie können eins ohne das andere verwenden.

0
John Saunders