Lógica "Cambiar contraseña"

Iniciado por Leguim, 19 Noviembre 2020, 17:43 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Hola!

Quería saber cómo debería funcionar un algoritmo para que un usuario pueda modificar la contraseña...

La forma más segura posible (aunque creo que sería más simple de lo esperado)

Lo que tengo en mente es:

1. Input para pedir contraseña nueva
2. Input para pedir que repita la contraseña nueva
3. Input para pedir contraseña actual para poder validar la autenticidad del usuario que cambiara su propia clave

¿Sería todo, no?

.:Xx4NG3LxX:.

Exacto, sería lo más simple, y yo no sé más que tu sobre desarrollo web ni nada... Pero podrías colocar una especie de "pregunta secreta". No se sí se adapta a tus gustos..
"Quizá Batch no sea un lenguaje de programación, pero no obstante deja de ser útil. Asi que no anden diciendo «Que ganas de perder el tiempo»"



Leguim

Cita de: .:Xx4NG3LxX:. en 20 Noviembre 2020, 04:05 AM
Exacto, sería lo más simple, y yo no sé más que tu sobre desarrollo web ni nada... Pero podrías colocar una especie de "pregunta secreta". No se sí se adapta a tus gustos..

Gracias!

Kyrie Eleison

#3
Así a bote pronto se me ocurre que hay -al menos- un paso previo.

Paso 0. ---> ¿El usuario tiene permisos/credenciales para cambiar la contraseña? Si es que SI ---> IR a paso 1. Si es que NO ---> se le echa fuera.

Un usuario -en general- no tiene porqué tener permisos para cambiar su propia contraseña. A veces es el administrador quien se la da, e incluso se la cambia cada cierto tiempo. Si; sé que es un poco tiquismiquis para redes/sistemas más o menos personales/domésticos, pero en entornos empresariales/corporativos es bastante normal que el usuario/operador de un terminal-PC no tenga privilegios de administrador para cambiar su propia contraseña (o instalar programas o compartir archivos, etc).

EDITO: también se me ocurre que el paso 3 suele implementarse antes del 1. De hecho suele ser el paso 3 concomitante con el que yo he llamado paso 0. Por ejemplo Linux para cambiar con sudo passwd ----- la contraseña de un usuario primero te pide tu propia contraseña sudo con la cual verifica si estás autorizado a cambiar la contraseña del otro (que puedes ser tú mismo), y posteriormente es cuando te pide la nuevas contraseña del usuario que sea (el que has llamado paso 1) y después verificarla (paso 2 tuyo).

Leguim

Cita de: Kyrie Eleison en 23 Noviembre 2020, 21:17 PM
Así a bote pronto se me ocurre que hay -al menos- un paso previo.

Paso 0. ---> ¿El usuario tiene permisos/credenciales para cambiar la contraseña? Si es que SI ---> IR a paso 1. Si es que NO ---> se le echa fuera.

Un usuario -en general- no tiene porqué tener permisos para cambiar su propia contraseña. A veces es el administrador quien se la da, e incluso se la cambia cada cierto tiempo. Si; sé que es un poco tiquismiquis para redes/sistemas más o menos personales/domésticos, pero en entornos empresariales/corporativos es bastante normal que el usuario/operador de un terminal-PC no tenga privilegios de administrador para cambiar su propia contraseña (o instalar programas o compartir archivos, etc).

EDITO: también se me ocurre que el paso 3 suele implementarse antes del 1. De hecho suele ser el paso 3 concomitante con el que yo he llamado paso 0. Por ejemplo Linux para cambiar con sudo passwd ----- la contraseña de un usuario primero te pide tu propia contraseña sudo con la cual verifica si estás autorizado a cambiar la contraseña del otro (que puedes ser tú mismo), y posteriormente es cuando te pide la nuevas contraseña del usuario que sea (el que has llamado paso 1) y después verificarla (paso 2 tuyo).

Hola!

me estaba refiriendo a cambiar una contraseña en una -aplicación web-, igual no aclaré eso en el título del tema.

Kyrie Eleison

Sí, pero es que incluso para una aplicación web tiene sentido.

Por ejemplo la aplicación web de mi banco para consultas on line además de pedirme la contraseña para entrar y hacer operaciones, si lo que deseo es cambiar la contraseña, me la vuelve a pedir aunque ya esté dentro; además de pedirme la nueva contraseña.

Pero es que, sin ir más lejos, la aplicación web de este foro, además de pedirte la contraseña para entrar a trabajar normalmente, si lo que quieres es cambiar tu contraseña en: Perfil ---> Configuración de la cuenta
se ve que hay dos casillas para la nueva contraseña: Escoge contraseña y Verifica contraseña
pero además al final del todo está la casilla: Contraseña actual
con la nota aclaratoria "Por razones de seguridad, debes introducir tu contraseña actual para hacer cualquier cambio a tu perfil."

Es una medida de seguridad muy normal, básica y prácticamente universal en cualquier aplicación mínimamente seria. O éso creo.

#!drvy

Lo unico que faltaria añadir es asegurarte de que proteges el formulario contra CSRF.

https://owasp.org/www-community/attacks/csrf
https://es.wikipedia.org/wiki/Cross-site_request_forgery


@Kyrle Eleison, eso ya lo tiene contemplado. Si te fijas, su punto 3 es "Input para pedir contraseña actual".

Otra cosa es lo que has comentado anteriormente de que el usuario debe tener permisos para editar su propia contraseña. A mi esto me parece un error. No se debe impedir cambiar la contraseña. El usuario debe poder introducir y/o cambiar su propia contraseña en cualquier momento. No se me ocurre ningún caso donde sea beneficioso limitar esa capacidad y se me ocurren unos cuantos donde es perjudicial y hasta ilegal.

Saludos

Danielㅤ

Hola, lo de pedir nuevamente la contraseña es por el robo/suplantación de cookies y por la sesión activa... alguien puede dejar la sesión activa y olvidarse de cerrarla, viene otra persona y puede tomar esa sesión pero al pedir contraseña para cualquier cambio, entonces no podrá hacer mucho con solamente tener la sesión activa y ahí es cuando juega un papel importante el pedir nuevamente la contraseña para que el foro pueda comprobar que verdaderamente el dueño de la cuenta es el que está intentando hacer un cambio a su perfil.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Kyrie Eleison

#8
Cita de: #!drvy en 24 Noviembre 2020, 13:31 PM@Kyrle Eleison, eso ya lo tiene contemplado. Si te fijas, su punto 3 es "Input para pedir contraseña actual".
Sí, pero a mi ésto me parece un error desde el punto de vista de la secuencia correcta de órdenes dentro de un programa. Porque ¿qué pasa si el programa ya ha validado los pasos 1) y 2) cuando se encuentra con que el paso 3) no cumple? ¿Deja la nueva contraseña aunque el propietario no se haya autentificado -al no verificar su contraseña-? ¿Destruye todo el proceso y vuelve al paso 1? ¿No deja ninguna contraseña?

No. Lo lógico es que PRIMERO valide que el usuario tiene permisos para cambiar la contraseña, y después, SI Y SOLO SI el usuario tiene credeneciales... le permita continuar.


Cita de: #!drvy en 24 Noviembre 2020, 13:31 PMOtra cosa es lo que has comentado anteriormente de que el usuario debe tener permisos para editar su propia contraseña. A mi esto me parece un error. No se debe impedir cambiar la contraseña. El usuario debe poder introducir y/o cambiar su propia contraseña en cualquier momento. No se me ocurre ningún caso donde sea beneficioso limitar esa capacidad y se me ocurren unos cuantos donde es perjudicial y hasta ilegal.

Saludos

Debe poder... si cuenta con los permisos necesarios. En una cuenta personal en su propio ordenador su propia contraseña inicial es el permiso.

En una cuenta de empresa o societaria donde es un mero usuario al que otros le han dado permiso, esos otros son los que deciden cual es su contraseña y cómo y para qué puede  usarla... y cuando se la pueden cambiar y comunicárselo.
En un ordenador de otros en el que simplemente estás trabajando... ese otro es el que impone las reglas y tú simplemente te callas -o dices sí bwuana-.

En tu propio ordenador claro que nadie debe impedir cambiar tu propia contraseña. De hecho si alguien lo ha hecho es que te ha hackeado tu ordenata.






Cita de: [D]aniel en 24 Noviembre 2020, 15:49 PM
Hola, lo de pedir nuevamente la contraseña es por el robo/suplantación de cookies y por la sesión activa... alguien puede dejar la sesión activa y olvidarse de cerrarla, viene otra persona y puede tomar esa sesión pero al pedir contraseña para cualquier cambio, entonces no podrá hacer mucho con solamente tener la sesión activa y ahí es cuando juega un papel importante el pedir nuevamente la contraseña para que el foro pueda comprobar que verdaderamente el dueño de la cuenta es el que está intentando hacer un cambio a su perfil.


Saludos
Por supuesto, lo sé. No lo he escrito como crítica, sino precisamente como ejemplo de caso de porqué no es sólo útil, sino conveniente el poner esa restricción. Ejemplo fácil: en un entorno de ordenador de empresa, tengo la sesión activa, me entran ganas horrorosas de mear, me voy sin bloquear sesión... pasa por allí el gilip... de turno... o el que me la tiene jurada porque le superé en el puesto...
...
... va y me jo..e el asunto cambiándome la contra...  :-(  y la cara de gilip... que se te queda...





Mod: No hacer doble post. Usar el botón "Modificar".

#!drvy

Citar¿Deja la nueva contraseña aunque el propietario no se haya autentificado -al no verificar su contraseña-? ¿Destruye todo el proceso y vuelve al paso 1? ¿No deja ninguna contraseña?

Eso no tiene ningún sentido y dudo que haya siquiera 1 cms que lo haga así. Obviamente verificará la contraseña antigua antes de asignar la nueva. El orden de los inputs de poco importa sobre todo si luego tiene más campos que rellenar.

CitarEn una cuenta de empresa o societaria donde es un mero usuario al que otros le han dado permiso, esos otros son los que deciden cual es su contraseña y cómo y para qué puede  usarla... y cuando se la pueden cambiar y comunicárselo.

Insisto. En ningún caso se debe limitar cuando un usuario cambia su contraseña. Es perjudicial para todo el flow de trabajo y es síntoma de problemas de estructura y control en el entorno empresarial. ¿Que pasa si la contraseña del usuario ha sido comprometida y el usuario es el primero en darse cuenta? No la puede cambiar hasta que no avise a sistemas. ¿Que pasa si el usuario quiere llevar por su propia cuenta el cambio periódico de contraseña? La administración debe ser capaz de cambiar la contraseña o resetearla, pero en ningún caso se debe limitar que el usuario pueda cambiar de contraseña... puede ser hasta ilegal.

Saludos