Iniciar sesión de usuarios automáticamente en un sitio web

1

Estoy creando un sitio web que tiene una función de foro extendida, donde los usuarios pueden iniciar sesión, publicar comentarios, etc. Estoy creando la función donde el sitio web almacena cookies en su computadora para que la próxima vez que visite el sitio web, inicia sesión automáticamente.

He oído que no se debe almacenar el nombre de usuario y la contraseña explícitos en una cookie. Así que decidí almacenar la identificación de usuario en mi base de datos como un valor de cookie. Esencialmente, toda la información cuando usa el sitio puede obtenerse consultando la base de datos nuevamente con este ID de usuario.

¡Entonces me di cuenta de que si editas manualmente tu cookie y colocas un ID de usuario aleatorio, cualquiera podría acceder a cualquier cuenta! Se puede acceder a todas las funciones en el sitio web, como nuevos comentarios, nuevos temas, etc. simplemente proporcionando su ID de usuario.

¿Cuál es la forma correcta de que los usuarios inicien sesión automáticamente en mi sitio sin exponerlo para que cualquiera pueda iniciar sesión?

    
pregunta l3utterfly 27.08.2014 - 06:03
fuente

1 respuesta

3
  1. Cree un token aleatorio criptográficamente seguro y asócielo con el ID de usuario en su base de datos
  2. Realizar un HMAC en el token
  3. el valor de la cookie será el token + HMAC

De esta manera, un atacante tendría que conocer su clave HMAC para poder forzar bruscamente el token y eso no es posible.

Para validar la cookie, primero extraiga el HMAC, valide la autenticidad del token y luego puede verificar su base de datos y extraer la identificación de usuario asociada. Después de algunas validaciones de HMAC fallidas, puede bloquear al usuario ya que ni siquiera una validación de HMAC puede fallar y significa que alguien está tratando de atacarlo.

Es importante mantener la seguridad de la cookie al:

  1. Establezca la marca HttpOnly en verdadero, por lo que no se puede acceder a la cookie desde javascript
  2. Establezca el indicador de seguridad en verdadero, por lo que la cookie solo se transmitirá a través de https y no podrá ser rastreada a través de la red
  3. Establezca un tiempo de caducidad razonable para la cookie para que sus usuarios no permanezcan conectados para siempre
  4. Configura el dominio de cookies para asegurarse de que no se filtre a ningún subdominio a donde no quieras que vaya
respondido por el aviv 27.08.2014 - 08:46
fuente

Lea otras preguntas en las etiquetas