Seguridad de SharedPreference de Android

Me pregunto sobre la seguridad de las preferencias compartidas.

¿Es posible tener acceso a las preferencias compartidas, incluso si se crearon en MODE_PRIV (0)?
¿Es posible listar todas las preferencias compartidas disponibles y luego buscar todas las configuraciones de otras aplicaciones?
¿Es un buen lugar para compartir datos confidenciales, como contraseña o símbolo de autenticación?

Gracias

Las Preferencias compartidas se almacenan como un archivo en el sistema de archivos del dispositivo. De forma predeterminada, se almacenan en el directorio de datos de la aplicación con las premisas de sistema de archivos establecidas que sólo permiten que el UID con el que se ejecuta la aplicación específica tenga acceso a ellas. Por lo tanto, son privados en tanto que los permisos de archivos de Linux restringen el acceso a ellos, lo mismo que en cualquier sistema Linux / Unix.

Cualquier persona con acceso root al dispositivo podrá verlos, ya que root tiene acceso a todo en el sistema de archivos. Además, cualquier aplicación que se ejecute con el mismo UID que la aplicación de creación sería capaz de acceder a ellos (esto no suele hacerse y es necesario tomar medidas específicas para hacer dos aplicaciones se ejecuta con el mismo UID, por lo que probablemente no es un gran preocupación). Por último, si alguien pudo montar el sistema de archivos de su dispositivo sin utilizar el sistema operativo Android instalado, también podría omitir los permisos que restringen el acceso.

Si le preocupa el acceso a sus preferencias (o cualquier otro dato escrito por su aplicación), deberá cifrarlo. Si usted está preocupado por ellos, va a necesitar averiguar exactamente cuánta protección es necesaria para el nivel de riesgo que usted ve. Hay una discusión muy extensa sobre esto en Seguridad de aplicaciones para la plataforma Android , que acaba de publicarse en diciembre de 2011 (descargo de responsabilidad: soy el autor de este libro).

SharedPreferences no son más que archivos XML en su carpeta de teléfonos / datos / datos /, por lo que cualquier aplicación o usuario con privilegios de superusuario en un dispositivo con raíz puede acceder a SharedPreferences, incluso si se crearon con MODE_PRIV

Todavía hay una manera de protegerlo de todo el mundo … Por favor, compruebe este enlace. Aquí puede almacenar datos en pref con cifrado, la clase es auto explicativa y muy fácil de usar.

https://github.com/sveinungkb/encrypted-userprefs

Como se ha dicho por otros cualquier persona puede acceder a ella, pero en este caso nadie puede leer los datos en su interior, ya que está cifrado. Por lo tanto, su máxima seguridad.Para mi sugerencia será generar la clave utilizada para el cifrado en tiempo de ejecución en lugar de codificación difícil. Hay muchas maneras de hacer eso 🙂

Normalmente, no, no pueden ser accedidas por otras aplicaciones, sin embargo, debe tener en cuenta que SharedPreferences se almacenan como archivos XML en el directorio /data/data/ , lo que significa que cualquier aplicación con privilegios de superusuario en un dispositivo con raíz puede acceder a SharedPreference S, incluso si se crearon con MODE_PRIV

  • Android Keystore - ¿se puede recuperar una clave de usuario por root si se establece en ese usuario?
  • Que es la forma más segura de incluir un par de clave (público / privado) en un apk
  • ¿Hay análogos javax.smartcardio en Android?
  • Xamarin Código de Seguridad
  • Android: Bug con ThreadSafeClientConnManager descargar imágenes
  • Calcular SHA256 Hash en Android / Java y C #
  • AndroidKeystore en la API 4.1
  • ¿Es seguro almacenar nombre de usuario y contraseñas en un SQLite local db en Android?
  • ¿Cómo debo codificar para resistir la "piratería con un solo clic"?
  • Cómo Hash String usando SHA-1 con la clave?
  • Comprobación de que el mensaje provenía de un punto específico de aplicación / punto final
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.