Garantizar la seguridad en la autenticación de la URL del token

1

Estoy tratando de hacer una provisión para restablecer la contraseña si el usuario olvida su contraseña. Lo que hice es crear una página html (por ejemplo, email.html) donde el usuario ingresará su dirección de correo electrónico. Cuando el usuario envía su dirección de correo electrónico, la página web la reenvía a un servlet, llamémosla forgot_pass.java. Luego se crea una cadena alfanumérica única de 128 bits (por ejemplo, id). Esta cadena junto con la url de forgot_pass.java (como url? Id = 21345 ...) se envía a la dirección de correo electrónico del usuario. Al hacer clic en el enlace, el servlet forgot_pass.java verifica si la identificación es válida o no y también verifica si expiró o no. Si pasa las comprobaciones mencionadas anteriormente, el usuario se reenvía a otra página html (llamemos a este re-enter.html). En esta página, el usuario puede ingresar su ID de correo electrónico, ingresar la contraseña dos veces y enviarla. Esto concluye el proceso.

Mi preocupación es si alguien accede a re-enter.html, ¿no podrá cambiar su contraseña? ¿Cómo puedo mejorar la seguridad?

    
pregunta Dev 07.02.2014 - 11:59
fuente

1 respuesta

4

Lo que tienes sonidos en un nivel básico, cuántas personas manejan restablecimientos de contraseña. Un par de cosas a considerar.

  • Los tokens solo deben ser válidos para un usuario. es decir, no debería tener un grupo de "tokens de reinicio válidos" sino una lista de tokens - > mapeos de nombre de usuario. Entonces, cuando alguien accede a la página uno, puede vincularlo a la cuenta de la que deberían haber hecho clic en el enlace.
  • cuando el usuario utiliza con éxito el enlace de la contraseña olvidada, después de verificar su token, debe establecer un token de sesión para ellos, y luego buscar un token de sesión válido al cargar la segunda página. De esa manera, si alguien intenta acceder directamente a la segunda página, no podrá usarla sin una sesión válida.
  • debe rellenar previamente la ID de correo electrónico para la segunda página en función del usuario al que se está accediendo el token. De lo contrario, existe el riesgo de que un usuario pueda restablecer otra contraseña.
  • Una vez que el token se haya utilizado con éxito, debería invalidarla para evitar que alguien que se encuentre con él en el futuro vuelva a restablecer la contraseña de los usuarios
  • Debes tener una caducidad del token "sin usar" para evitar que sean de utilidad permanente.
  • Una cuenta de usuario solo debe tener un token válido a la vez. Si un usuario tiene uno emitido y vuelve a realizar el proceso, debe sobrescribir el primer token.
respondido por el Rоry McCune 07.02.2014 - 12:59
fuente

Lea otras preguntas en las etiquetas