preferencias - settings activity android studio
Android: ¿es una buena idea almacenar el token de autenticación en las preferencias compartidas? (2)
En resumen, sí, eso es algo perfectamente razonable de hacer.
Lo mejor que puedes hacer además de eso es la ofuscación solamente. Si mantiene el token en la memoria, un usuario raíz puede echarle un vistazo. Si lo encriptas, también debes almacenar la clave de cifrado en el dispositivo o no podrás usar el token ... y la clave puede ser robada tan fácilmente como el token.
Si alguien tiene la raíz en el dispositivo, todas las apuestas están desactivadas. No optimizar para ese caso. Si su aplicación es de alta seguridad súper alta, no permita que se ejecute en dispositivos rooteados, o implemente una funcionalidad de borrado remoto donde el usuario pueda denunciar el robo de su dispositivo y pueda invalidar el token en el servidor.
Android 4.3 introdujo el Android Keystore . Eso supuestamente proporciona una tienda segura para claves criptográficas. Esto podría usarse para almacenar una clave que se usa para descifrar un token cifrado almacenado con métodos tradicionales. Sin embargo, el enlace al que se hace referencia no menciona cómo un dispositivo rooteado afecta la seguridad de esto.
ACTUALIZACIÓN 2018: la mayoría de los dispositivos Android modernos tienen almacenes de claves respaldados por hardware , a través de un entorno de ejecución confiable (TEE) proporcionado por el SoC. Esto hace que sea imposible (ver más abajo) que el pirata informático obtenga la clave maestra del almacén de claves que, de otro modo, sería necesaria para descifrar las claves que ha almacenado en la Tienda de claves de Android.
Bueno, "imposible" es una palabra fuerte. Es mejor decirlo como "inviable". Es decir, necesitarías algo como un microscopio electrónico para escanear los bits fusionados en el SoC que proporciona el TEE. Si usted es el tipo de persona cuyos datos merecen este tipo de atención, es probable que tenga problemas mayores.
Tengo una aplicación que se comunica con un servidor. Cuando el usuario inicia sesión en la aplicación, se almacena un Token de Autenticación en el servidor y se almacena en las SharedPreferences
de la aplicación y cada vez que la aplicación solicita datos de un servicio web, se valida el token de autenticación.
Mi pregunta es, ¿es seguro almacenar el token de autenticación en SharedPreferences
? Pregunto porque un usuario con privilegios de administrador puede acceder a las preferencias, extraer el token y usarlo.
¿Hay alguna forma de tener más seguridad en ese sentido?
Si existe la preocupación de que el token pueda leerse en SharedPreferences, una buena regla empírica es proporcionar un cierto nivel de encriptación a los datos que se almacenan.
Esta respuesta describe una clase simple para cifrar datos: ¿Cuál es la forma más adecuada de almacenar la configuración del usuario en la aplicación de Android?