java - example - ¿Debería usar AccountManager para almacenar nombres de usuario y contraseñas para una aplicación de Android?
android account manager apk (2)
Me gustaría saber si se debe implementar AccountManager
para guardar las credenciales de los usuarios, como el nombre de usuario, el correo electrónico, las contraseñas, etc. No puedo encontrar una buena razón para usarlo yo mismo.
No quiero que otras aplicaciones tengan acceso a las Accounts
y realmente no quiero que se muestren en la configuración de "Cuentas y sincronización" (aunque quizás eso no sea un gran problema).
Entonces mi pregunta es: ¿Debo usarlo? ¿Pros contras? ¿Puedo ocultar las Accounts
de otras aplicaciones y evitar que aparezcan en "Cuentas y sincronización"?
Visión general
Usar un AccountManager para almacenar credenciales es una forma mucho más segura que almacenar en un archivo o una base de datos SQL.
Un archivo puede ser recuperado por cualquier otra aplicación, a diferencia de AccountManager. Android exigirá que solo su aplicación pueda acceder a la clave.
Pero incluso el AccountManager no está completamente protegido en caso de pérdida de teléfono, por ejemplo, vea esto para obtener más información .
Buenas practicas)
- Yo recomendaría usar el AccountManager y no almacenar la contraseña en claro, pero el hash.
- Y para un mejor nivel de seguridad, es incluso mejor almacenar un token dedicado del dispositivo entregado por el servicio web y asociado a la cuenta (en el lado del servicio web) y permitir al usuario revocar el token.
No está bien
- No almacene una contraseña clara o incluso con hash como un archivo o en una base de datos accesible por cualquier persona.
- Nunca almacene una contraseña clara, sino que siempre trabaje con un hash.
Ver también
Esta respuesta aceptada a esta pregunta probablemente te ayude ... ¿Para qué debo usar el Administrador de cuentas de Android?
También se debe señalar, como se menciona en la publicación anterior y también en AccountManager sin un SyncAdapter? , que no puede tener un AccountManager
sin un SyncAdapter
, por lo que probablemente no sea bueno usar esto para su situación particular.
No puedo ver ninguna razón para usar un AccountManager
específicamente para almacenar este tipo de información; al final del día, no es diferente a almacenar manualmente los datos en su propia base de datos o archivo. En todo caso, es probable que complique las cosas: ¿por qué no simplemente las almacena en SharedPreferences
?
La única razón por la que podría pensar que sería alentar el uso de AccountManager
sería si desea compartir su cuenta a través de diferentes aplicaciones, ya que los datos se almacenan en el almacén de datos central de Android, al que pueden acceder todas las aplicaciones. Sin embargo, si esto no es necesario, creo que es probablemente más fácil y más simple usar solo SharedPreferences