¿Qué impide que las personas modifiquen las cookies para cambiar quiénes inician sesión?

2

Estoy desarrollando una red social y, según mi conocimiento, la mejor manera de almacenar entre páginas en las que el usuario está conectado es mediante cookies. Por lo tanto, supongamos que estoy almacenando una cookie de la ID de usuario que está registrada.

De todos modos, ¿qué impide al usuario cambiar el valor de la cocinera para engañar al sitio web para que piense que está conectado como otra persona?

    
pregunta Jacob Garby 07.06.2017 - 21:01
fuente

3 respuestas

7
  

Supongamos que estoy almacenando una cookie de la ID de usuario que ha iniciado sesión.

No es así como funcionan las cookies de sesión. La cookie no solo debe contener el ID del usuario actual, ya que obviamente permitiría a un atacante manipular el valor.

En cambio, un enfoque común es que la aplicación web emita un ID de sesión aleatorio suficientemente largo para el usuario y asocia internamente este ID de sesión con la cuenta del usuario real. Como a un usuario se le asigna un nuevo ID de sesión después de cada inicio de sesión, no será factible predecir los ID de sesión de otros usuarios o manipular los valores específicos del usuario modificando la cookie.

En general, no debería tener que inventar su propio esquema de administración de sesión. Si piensa en cómo almacenar una identificación de usuario en una cookie, probablemente lo esté haciendo mal. Muchos marcos ya proporcionan abstracciones para sesiones basadas en cookies. Por ejemplo, PHP tiene soporte incorporado para manejo de sesiones . También eche un vistazo a la OWASP Hoja de referencia para la administración de sesiones para obtener información sobre consideraciones de seguridad.

    
respondido por el Arminius 07.06.2017 - 21:15
fuente
2

Es posible almacenar información en las cookies y evitar que los usuarios manipulen los datos de las cookies. La forma de hacerlo es crear un HMAC del valor de la cookie y almacenarlo junto con la cookie. Luego, cada vez que reciba un valor de cookie, verifique si tiene el HMAC correcto. Dado que los HMAC necesitan una clave secreta para crear la que solo tiene el servidor, está seguro de que el servidor creó el valor de la cookie.

Algunos marcos tienen esto incorporado ( expressjs , rieles ). Esta pregunta trata el concepto de cookies firmadas un poco más.

    
respondido por el Sjoerd 08.06.2017 - 10:12
fuente
0

Si autenticas a un usuario en base a una cookie de texto simple con un nombre de usuario, no puedes asegurarte de que quien tenga la cookie sea la persona que dice ser. Cualquiera puede crear una cookie con el nombre de usuario que desee. Depende de usted asegurarse de que sean quienes dicen ser.

Si supiera el nombre de usuario de alguien, podría crear una cookie con su nombre de usuario y omitir el inicio de sesión de la aplicación y ser quien quisiera ser si no hubiera verificaciones del lado del servidor.

En lugar de autenticar a un usuario usando una cookie, sugeriría usar una sesión del lado del servidor y pasar un identificador de esta sesión al usuario para que la almacene como una cookie. Luego, cuando solicitan su página, puede identificar quién está utilizando el usuario sus variables de sesión del lado del servidor. El problema con este método es que si su identificador de sesión es fácil de adivinar, la sesión de otro usuario podría ser secuestrada, pero al menos en este caso, la sesión podría borrarse en el servidor.

    
respondido por el anon 07.06.2017 - 21:15
fuente

Lea otras preguntas en las etiquetas