sql >> Base de Datos >  >> RDS >> SQLite

La mejor opción para almacenar nombre de usuario y contraseña en la aplicación de Android

Sí, esto es complicado en Android. No desea almacenar la contraseña de texto sin formato en las preferencias, porque cualquier persona con un dispositivo rooteado básicamente mostrará su contraseña al mundo. Por otro lado, no puede usar una contraseña cifrada, porque tendría que almacenar su clave de cifrado/descifrado en algún lugar del dispositivo, de nuevo susceptible al ataque raíz.

Una solución que utilicé hace un tiempo es hacer que el servidor genere un "ticket" que se devuelve al dispositivo, lo cual es bueno por un cierto período de tiempo. Este ticket es utilizado por el dispositivo para todas las comunicaciones, utilizando SSL, por supuesto, para que nadie pueda robar su ticket. De esta manera, el usuario autentica su contraseña en el servidor una vez, el servidor devuelve un ticket que expira y la contraseña nunca se almacena en ninguna parte del dispositivo.

Varios mecanismos de autenticación de tres patas, como OpenID, Facebook e incluso las API de Google, utilizan este mecanismo. Las desventajas son que, de vez en cuando, cuando el ticket caduca, el usuario debe volver a iniciar sesión.

En última instancia, depende de qué tan segura quiera que sea su aplicación. Si esto es simplemente para distinguir a los usuarios, y no se almacena información supersecreta como cuentas bancarias o tipos de sangre, entonces tal vez guardar la PWD en texto sin formato en el dispositivo esté bien :)

¡Buena suerte, sea cual sea el método que decidas que es mejor para tu situación particular!

Editar:debo tener en cuenta que esta técnica transfiere la responsabilidad de la seguridad al servidor:querrá usar hashes salados para la comparación de contraseñas en el servidor, una idea que verá en algunos de los otros comentarios para esta pregunta. Esto evita que la contraseña de texto simple aparezca en cualquier lugar, excepto en la Vista de edición de texto en el dispositivo, la comunicación SSL con el servidor y la RAM del servidor mientras procesa la contraseña. Nunca se almacena en el disco, lo cual es Good Thing™.