ASP.NET MVC 4 y la pérdida de seguridad de sesión

En lugar de usar el sistema del usuario MVC de ASP.NET, simplemente estoy usando la sesión, como la siguiente:

Cuando inicia sesión (nombre de usuario + contraseña), obtengo el usuario correspondiente de la base de datos y configuro:

Session["UserId"] = fetchedUser.UserId;

Entonces, siempre estoy comprobando si está conectado:

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

El problema es que si alguien copia el valor de ASP.NET_SessionId de un usuario registrado (por ejemplo:el usuario va al baño y el compañero de trabajo que está sentado junto a él revisa sus cookies con el inspector de cromo), entonces podrá crear una cookie en su computadora y actuar como ese usuario.

Mis preguntas son:

¿Por qué las sesiones son más seguras que las cookies si el ID de sesión se guarda en una cookie?¿Puedo hacer esto más seguro (y continuar usando la sesión)?¿Cómo lo hace el sistema interno de autenticación de usuarios de ASP.NET?

Respuestas a la pregunta(1)

Su respuesta a la pregunta