2009-03-27 19 views
7

Si un usuario inicia sesión en el sitio y dice 'recordarme', obtenemos el identificador único para el usuario, encriptamos esto con Rijndael administrado con un tamaño de clave de 256 y colocamos esto en una cookie httponly con un vencimiento establecido de, por ejemplo, 120 días, la caducidad se actualiza cada vez que se solicita con éxito al servidor.¿Es esta una forma razonable de implementar la funcionalidad 'recordarme'

Opcionalmente generamos el vector de inicialización basado en el agente de usuario y parte de la dirección ipv4 (los dos últimos octetos).

theres Obviamente hay un sistema de caducidad real, construida en esto, el usuario podría utilizar esta técnica clave encriptada para siempre (dado que no cambiamos la clave del lado del servidor) ..

que considera el hecho de que esta característica para permitir Necesito permitir que el usuario pueda eludir el inicio de sesión y darme su id. Único (que es un guid), pensé que el guid solo era realmente difícil de adivinar el guid de un usuario real, pero dejaría el sitio abierto para atacar botnots generando guids (no tengo idea de qué tan realista es para ellos encontrar un guid de fiar) ... así que esta es la razón por la cual hay cifrado donde el servidor conoce la clave de cifrado, y opcionalmente el iv es específico para el navegador y la parte de IP.

¿Debería considerar un enfoque diferente en el que el servidor emita tickets asociados a un usuario, y estos tickets tendrían una fecha de caducidad conocida para que el servidor tenga el control de la caducidad? ¿De verdad me importa la expiración? recuerda, ¿me recuerda después de todo?

Esperando ser humillado;), Saludos.

+0

posible duplicado de [¿Cuál es la mejor manera de implementar "recordarme" para un sitio web?] (Http: // stackoverflow.com/questions/244882/what-is-the-best-way-to-implementation-remember-me-for-a-website) – user

Respuesta

6

Very similar question.

La solución a su pregunta es en este blog post

"persistente de sesión de cookies Mejor Práctica", describe un enfoque relativamente seguro a la aplicación de la familiar "Remember Me" opción para web sitios. En este artículo, propongo una mejora de que conserva todos los beneficios de de ese enfoque, pero también hace posible detectar cuándo una cookie de inicio de sesión persistente ha sido robada y utilizada por un atacante.

Como dice Jacco en los comentarios: para información en profundidad acerca de autenticación segura leer The Definitive Guide To Website Authentication.

+0

Super, debería haber buscado mejor;) aplausos. – meandmycode

+0

Deberías leer la publicación original: http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/. – Jacco

+0

La versión 'mejorada' no ofrece ninguna mejora. Ver también: http://stackoverflow.com/questions/549/the-definitive-guide-to-website-authentication-beta#477579 También hay una explicación del problema en algún lugar abajo en los comentarios sobre la versión 'mejorada'. – Jacco

0

¿Has considerado algo así como Open Id? Como SO usa.

+0

Hola Josh, en realidad el sitio puede usar openid en el futuro, pero recuerda que la funcionalidad aún necesita para recordar quién dice ser según nuestra base de datos de usuarios. – meandmycode

0

¿Cuán importante es la información que se está recordando? Si no va a ser algo muy personal o importante, simplemente coloque un GUID en la cookie.

Incluir la dirección IP en el cálculo es probablemente una mala idea, ya que haría que los usuarios de las redes públicas se olviden instantáneamente.

El uso de fuerza bruta para encontrar GUID es ridículo, ya que hay 2 posibilidades.

+0

Detalles de la dirección del potencial y del historial de pedidos, también sí, el asunto de la ip es opcional dados los problemas del proxy con algunas redes. – meandmycode

Cuestiones relacionadas