Al cambiar una contraseña usando una página web, ¿se debe ingresar la contraseña anterior en la misma pantalla?

11

Hay una convención para solicitar siempre la contraseña antigua en la misma página que la que se está cambiando, como se muestra a continuación.

¿Es aceptable desde una perspectiva de seguridad permitir que un usuario inicie sesión y luego cambie la contraseña en una página separada que no requiera la contraseña anterior?

Lo pregunto porque estoy tratando de optimizar una aplicación móvil y estoy considerando que la aplicación web estándar tenga el mismo flujo de trabajo.

Ejemplo de un flujo de trabajo "molesto" para el usuario:

  1. El usuario se autentica

  2. Se notifica al usuario que PW ha caducado o se debe cambiar (inmediatamente)

  3. El usuario se dirige a la pantalla de abajo. La solicitud adicional de "contraseña actual" es molesta y me pregunto qué beneficio proporciona ...

    
pregunta random65537 01.02.2013 - 02:33
fuente

3 respuestas

11

El motivo por el que se le ha introducido la contraseña actual cuando elige una nueva es para asegurarse de que la persona que realiza el cambio es el propietario de la cuenta "real".

Si puede cambiar directamente su contraseña una vez que haya iniciado sesión, es posible que ocurran los siguientes ataques:

  1. Te alejas de tu computadora por un momento, voy al sitio web
    y cambia tu contraseña
  2. Robo sus cookies de inicio de sesión, cargo el sitio web como usted y cambio su contraseña

Editar: si está sugiriendo la siguiente secuencia: inicie sesión con una contraseña antigua, la siguiente página le solicitará una nueva contraseña, entonces probablemente tenga el mismo nivel de protección, asumiendo que la pantalla de "cambio" se apaga después de algún tiempo.

No creo que importe cuántas pantallas toma el proceso. Creo que la clave es que cuanto más corto sea el período entre cuando puede estar seguro de que el propietario "real" interactuó con el sitio, y cuando se emite la solicitud de cambio de contraseña, mayor será la seguridad.

Ya que puede establecer el tiempo transcurrido en cero al colocar los campos de contraseña antiguos y nuevos en la misma página, con un pequeño cambio (IMHO) en UX, probablemente esa es la razón por la que se hace de esa manera.

    
respondido por el scuzzy-delta 01.02.2013 - 03:08
fuente
8

El objetivo de hacer esto es evitar que un usuario se aleje de la sesión, y que un atacante tome el control de la sesión y cambie la contraseña del usuario.

Entonces, si lo piensas desde una perspectiva de mitigación de ataques, el ataque es alguien que salta a una sesión existente y cambia las credenciales. La mitigación es requerir un punto en el tiempo de autenticación antes de cambiar la credencial.

En el escenario móvil, la teoría es que el usuario siempre tendrá su teléfono consigo, y es probable que la sesión no sea abandonada (el tiempo suficiente) para que un atacante haga algo perjudicial.

Sin embargo, en la práctica, eso realmente no funciona porque un atacante en teoría podría convertir una sesión no móvil a una sesión móvil (por ejemplo, saltar a una sesión de escritorio, robar las cookies, adjuntar las cookies a la sesión móvil) y omitir el punto en el tiempo de verificación de autenticación.

Es un intercambio entre características / experiencia y contramedidas de seguridad. Para que el segundo escenario funcione de manera segura, debe tener confianza (tener mitigaciones para estos ataques) un atacante no puede convertir la sesión o insertarse en una sesión móvil existente.

    
respondido por el Steve 01.02.2013 - 03:09
fuente
3

En mi opinión, no, eso no sería aceptable. La razón es que un cambio de contraseña es un evento transaccional, y debe verificar que el usuario que está cambiando la contraseña está autorizado para realizar esa transacción, y los autentifica confirmando que conocen la contraseña actual.

    
respondido por el Xander 01.02.2013 - 03:09
fuente

Lea otras preguntas en las etiquetas