variable sesion net mvc inicio hacer form como asp c# asp.net session

sesion - qué tan seguro es usar variables de sesión-asp.net/c#



variables de session c# mvc 5 (5)

Cuando se trata de sesiones, puede tener la seguridad de que no se puede acceder directamente a los datos. Si por alguna razón su aplicación alguna vez devuelve datos directamente de la sesión que podrían ser explotados, rara vez hay alguna razón para hacerlo, por lo que el riesgo es bastante mínimo.

La parte más riesgosa de las sesiones viene en forma de secuestro de sesión. Mira, a pesar de que todos tus datos están almacenados de forma segura en el servidor, todavía tenemos que lidiar con todo ese problema "HTTP es sin estado". Por lo tanto, se debe almacenar algún tipo de identificador en el cliente para que el servidor pueda buscar los datos de sesión correctos. Pero si de alguna manera otro sistema se apodera de esa identificación, entonces pueden pretender ser tú mientras el servidor mantenga la sesión activa.

Además de abordar continuamente cualquier potencial de scripts entre sitios en su sitio web, no hay mucho que pueda hacer al respecto sin una conexión segura. Incluso entonces puede ser implementado incorrectamente.

Entonces, básicamente, me pregunto qué tan segura es mi forma de usar las variables de Sesión.

Tengo un formulario de inicio de sesión donde el usuario escribe su nombre de usuario / contraseña, se parametriza y luego se consulta, si existe un nombre de usuario / contraseña, luego se devuelve un ID de usuario de la tabla db. Esto es único para cada usuario.

cuando tengo este valor, aquí es donde me pregunto si de esta manera es una manera segura de almacenar el ID de usuario dentro de la uID de la variable de sesión. de todos modos, así es como lo hago,

Session["uID"] = (int)dt.DefaultView[0]["userID"]; FormsAuthentication.RedirectFromLoginPage(username.Text, false); Response.Redirect("userPage.aspx", false);

luego, la página se redirige a otra página donde utilizo la variable de sesión para buscar las tablas de usuarios desde el archivo db.

Gracias de antemano por su colaboración


El estado de la sesión se mantiene completamente en el lado del servidor, sin importar qué método de almacenamiento use (en memoria, servidor de estado de sesión o base de datos).

Entonces, a menos que su servidor sea pirateado, las variables de sesión son seguras. Y en caso de que su servidor sea pirateado, el pirata informático solo tendrá acceso a los datos en su propia sesión, a menos que encuentre una forma de analizar la memoria del proceso IIS.


Muy seguras, las variables de sesión de .NET no son lo mismo que las variables de cookie que se pueden ver desde el lado del cliente, las variables de sesión en esta instancia solo son accesibles desde el código de C #.

Por lo tanto, puede estar seguro sabiendo que la variable Session no puede ser editada por nadie más que el código que ejecuta el fondo.

No está completamente relacionado con su pregunta, pero podría ser bueno saberlo en su caso:

También puede almacenar un objeto completo en la sesión, por lo que podría almacenar un objeto de usuario en sesión, como

user_Class user = new user_Class(); user.UID = 1; Session["User"] = user;

Luego, vuelve a cargarlo en la carga de cada página.

user_Class user = (user_Class)Session["User"];

Luego, puede obtener user.UID de la sesión cada vez.


Todavía eres vulnerable, incluso si TU SERVIDOR NO ESTÁ COMPROMETIDO, la sesión puede ser fácilmente secuestrada mediante el uso de MITM Attack y cuando un atacante obtiene tu sesión puede hacer cualquier cosa que puedas hacer.

Puede utilizar técnicas para evitar el secuestro de sesión, pero recuerde que aún es vulnerable si hay un problema de codificación, etc. que hace que su aplicación sea vulnerable.

Usando SSL

SSL su sitio

Generar Hash

Sesión protectora