2010-08-18 10 views
7

Actualmente estoy haciendo un sitio usando GWT, alojado en App Engine. Lo estoy haciendo con mis propios inicios de sesión que estoy creando (sé que Google proporciona algo con GWT, pero necesito mi propio sistema de inicio de sesión), y he estado tratando de descubrir sesiones desde hace bastante tiempo. He encontrado algunos tutoriales, y uno de los sitios que estaba leyendo es http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQGWT: almacenamiento de ID de sesión en una cookie, y luego ¿qué?

Hay una sección en "Cómo recordar inicios de sesión". Sé cómo obtener la ID de la sesión y almacenarla en el cliente en una cookie a través de una llamada RPC. Lo que no entiendo es, eventualmente después de un día o así, el usuario regresa y se supone que debo obtener la identificación de la sesión de la cookie y enviarla al servidor. ¿Qué se supone que debo hacer en el servidor para evaluar de forma segura si la ID de sesión todavía es legal y obtener toda la información necesaria sobre el usuario?

Preguntas adicionales: 1. ¿Qué haría cambiar la identificación de la sesión? 2. ¿Qué sucede si el usuario estaba en una computadora portátil y el usuario se fue a otra parte? ¿Todavía podría volver a conectarse sin tener que volver a ingresar su nombre de usuario y contraseña?

Gracias!

~ Scott

Respuesta

1

Para recordar los inicios de sesión que necesita para generar de forma segura un identificador de sesión único. Normalmente, esto se coloca en una cookie. Yo recomendaría usar un marco que haga las cookies de sesión por usted. Hacerlo mal puede dejar su sitio abierto al abuso. Las cosas a considerar incluyen:

  • ¿Tienes que preocuparte por el robo de cookies. La dirección IP del usuario debe estar codificada en la identificación de la sesión o vinculada a la identificación de la sesión. Verifique la dirección IP en cada acceso de página.
  • Asegúrese de que sus inicios de sesión estén en sesiones cifradas. De lo contrario, expone las credenciales en texto plano en la red.
  • ¿Cuánto duran las sesiones? Deben transcurrir el tiempo después de un límite de tiempo fijo. Esto puede durar horas o días.
  • Recordarme debería ser una funcionalidad diferente en una cookie diferente. Necesita contener algo que pueda usarse para identificar al usuario. Dependiendo de sus requisitos de seguridad, puede necesitar ser un valor encriptado. Esta cookie puede tener un tiempo de espera más largo.

Las respuestas a sus preguntas adicionales son.

  1. Nada en el lado del cliente es probable que cambie la identificación de la sesión. La identificación de sesión debe regenerarse cada vez que inicie sesión.
  2. Dependiendo de la seguridad de la identificación de la sesión, es posible que tengan que iniciar sesión. Las cookies de sesión segura a menudo codifican la dirección IP para evitar el robo de cookies. Si es así, el usuario de la computadora portátil necesitaría volver a iniciar sesión.
8

Pregunta similar: question on GWT, Cookies and webpage directing.
Una cosa importante que debe recordar: no confíe solo en las cookies: transfiera la identificación/token de sesión en la carga útil de la solicitud también y compárela con el valor de la cookie en el lado del servidor. Esto evitará los ataques XSRF. Eso es el tipo de cosa que debería preocuparle.

La política sobre cómo lidiar con los ID de sesión depende de la seriedad con que adopte la seguridad en su aplicación y qué tipo de aplicación es.Por ejemplo, puede iniciar sesión con el mismo token en GMail desde diferentes direcciones IP. Supongo que lo permitieron porque es común que la IP del usuario cambie en las sesiones. Sin embargo, agregaron una función que le permite ver desde qué IP inició sesión el usuario recientemente. Y no se olvide de los usuarios con direcciones IP dinámicas (un número bastante grande): si realiza un seguimiento de tokens e IP, básicamente no permitirá que los usuarios se mantengan conectados entre sesiones.

¿Qué se supone que ver en el servidor con el fin de evaluar de forma segura si ID de sesión sigue siendo legal, y tire hacia arriba toda la información necesaria sobre el usuario?

Debe realizar un seguimiento de los ID de sesión/par de inicio de sesión en su base de datos.

¿Qué haría cambiar la identificación de la sesión?

O caduca o el usuario intenta iniciar sesión con un token que no está vinculado a su IP. También puede agregar sus propias reglas, como el número de inicios de sesión, etc. Para mayor seguridad, puede generar una nueva ID/token de sesión en cada inicio de sesión/sesión (el usuario se autentica con el token antiguo, el servidor verifica que sea válido) y devuelve al usuario el nuevo token que debe usar a partir de ahora).

Cuestiones relacionadas