ASP.NET MVC 4 und Sitzungssicherheitslücke

Anstatt das ASP.NET MVC-Benutzersystem zu verwenden, verwende ich einfach die Sitzung wie folgt:

Wenn er sich anmeldet (Benutzername + Passwort), hole ich den entsprechenden Benutzer aus der Datenbank und setze:

Session["UserId"] = fetchedUser.UserId;

Dann überprüfe ich immer, ob er eingeloggt ist:

if (Session["UserId"] != null && ...)

Das Problem ist, dass, wenn jemand den Wert von ASP.NET_SessionId von einem angemeldeten Benutzer kopiert (z. B .:benutzer geht ins bad und mitarbeiter, der neben ihm sitzt, überprüft seine cookies mit chrome inspector), kann er auf seinem Computer ein Cookie erstellen und als dieser Benutzer fungieren.

Meine Fragen sind:

Warum sind Sitzungen sicherer als Cookies, wenn die Sitzungs-ID in einem Cookie gespeichert ist?Kann ich dies sicherer machen (und die Sitzung weiterhin verwenden)?Wie funktioniert das interne ASP.NET-Benutzerauthentifizierungssystem?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage