Estoy desarrollando una aplicación para Android que potencialmente manejará datos confidenciales del usuario, y algunos de ellos pueden incluso considerarse datos médicos (por ejemplo, altura, peso, alergias, etc.).
¿Cuáles serían las prácticas de seguridad recomendadas para proteger los datos del usuario tanto desde la perspectiva del cliente como desde el lado del servidor?
No estoy hablando de las prácticas necesarias para obtener certificaciones gubernamentales, sino de prácticas sólidas, probadas y recomendadas para la protección de la información de los usuarios.
Por ejemplo, en el lado del cliente, cifrar la base de datos (con SQLCipher ¿quizás?) en todo momento, y simplemente descifrar la información cuando sea necesario . Si parte de esta información es para dejar el dispositivo, entonces SSL sería una necesidad. Nunca almacene la contraseña de un usuario. Manejo de la sesión de autenticación, etc. Problemas con el almacenamiento en caché, ¿debo almacenar en caché el acceso frecuente o descifrarlo desde db cada vez que sea necesario?
En el lado del servidor, el hash y la distribución de las contraseñas en lugar de almacenar contraseñas de texto sin formato también es estándar en la industria.
Puntos de bonificación por referencias o explicaciones sobre cómo para implementar correctamente dichas prácticas.
Aclaración: no estoy diciendo que las prácticas de ejemplo mencionadas anteriormente son de hecho buenas prácticas, es solo para ilustrar el tipo de prácticas generales de las que estoy hablando.