entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

¿Como podría almacenar un usuario y su contraseña de forma segura?[Android]

¿Como podría almacenar un usuario y su contraseña de forma segura?
En mi aplicación me gustaría poner un botón de recordar usuario en el login,este hace una llamada a un servidor y comprueba los datos.

Como podría guardar estos datos de forma que no queden expuestos? darme alguna idea.

Gracias :)

1 Respuesta

4votos

Leonardo-Tadei Puntos227320

Hola @1raziel1,

podés hacer esto de la siguiente manera:

  • en el servidor, cifrás la contraseña del usuario. Sería ideal con un cifrado de verdad y no con un mero MD5.
  • cuando un usuario se loguea, cifrás la contraseña y comparás con la guardada que también está cifrada: si son iguales, la contraseña es válida (de esta forma en el servidor no están las contraseñas en texto claro)
  • el cliente móvil, cuando se loguea, pasar por este mecanismo, y en caso de un login válido, el servidor devuelve una transformación de algún tipo de la contraseña cifrada, para que el cliente la pueda guardar. Es decir, no devuelve lo mismo que está guardado en el servidor.
  • en el caso de "recordar contraseña", el cliente envía el nombre de usuario y la transformación de la contraseña guardada, junto con algún parámetro que indique que es este el macanismo de acceso.
  • en el servidor, al detectar el mecanismo de acceso de la contraseña, este revierte el proceso y obtiene la contraseña cifrada, luego compara la contraseña cifrada con la guardada para ver si coincide y el usuario es válido.

De esta forma tenés varias ventajas:

  • en el cliente no está guardada la contraseña en claro.
  • en el cliente no está guardada la contraseña cifrada que usa el servidor.
  • en el cliente no está el algoritmo de transformación.
  • en caso de romperse el algoritmo de transformación (que tiene que ser reversible y por tanto es la parte más débil) lo único que se obtiene es la contraseña cifrada.

Además de esto, tener algún mecanismo web para cambiar la contraseña o revocarla por parte del usuario, por si se extravía el móvil o se sospechan intrusiones.

El mecanismo que te describo es independiente de la plataforma: es un algoritmo típico para cuando no podés confiar en el cliente, ya sea un móvil, una tarjeta inteligente, etc.

Saludos cordiales!

0voto

1raziel1 comentado

Gracias compañero, me pondré a ello

0voto

wroque comentado

No lo entendí bien, me dices que cifras la contraseña luego del login y esta contraseña cifrada devuelves y es la que almacena el dispositivo móvil, y cada vez que uno se logea vuelve hacer un cifrado diferente ? sería bueno algún grafico (UML) de apoyo.

pd: te recomiendo usar tokens

0voto

Leonardo-Tadei comentado

No, justamente lo que digo es NO enviar la contraseña cifrada al móvil, sino enviar la contraseña cifrada transformada al móvil.

Así para el login automático, hace falta una bandera de que es "auto" y se recibe la transformada, se des-transforma y recién ahí se obtiene la cifrada.

Justamente esta transformada funciona como token, pero "token" es un concepto demasiado genérico y he visto formas muy incorrectas de implementarlo, como por ejemplo usar de token al nombre de usuario y que el código, al detectar un nombre de usuario exsitente, de por válido el acceso, sin hacer ninguna verificación ni guardar comprar con la contraseña.

0voto

wroque comentado

Si, creo que lo entendí. hasta dolor de cabeza me dio.

tienes información respecto a tokens, aplicados de forma correcta ?

0voto

Leonardo-Tadei comentado

No tengo documentación sobre el tema, ya que casi toda la disponible es sobre la implemntación técnica de un token, pero nunca ví un artíuclo que se detenga a discutir sobre el contenido que un token debería tener...

Incluso en lenguajes como PHP que traen un manejador de sesiones, el entorno crea automáticamente una cookie que se usa como token para recuperar el valor de la sesion... despúes el conetnido de la sesión y la forma adecuada de usarla depende tanto de la función y el contexto, que no suele hablarse mucho sobre eso.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta