Seguridad de Android SharedPreference

Me pregunto acerca de la seguridad de las preferencias compartidas.

¿Es posible acceder a las preferencias compartidas, incluso si se crearon en MODE_PRIV (0)?
¿Es posible enumerar todas las preferencias compartidas disponibles y luego recuperar todas las configuraciones de otras aplicaciones?
¿Las preferencias compartidas son buenas para poner datos confidenciales, como contraseña o token de autenticación?

Gracias

Las Preferencias compartidas se almacenan como un archivo en el sistema de archivos en el dispositivo. De forma predeterminada, están almacenados en el directorio de datos de la aplicación con el conjunto de permisos del sistema de archivos que solo permite el UID con el que se ejecuta la aplicación específica para acceder a ellos. Por lo tanto, son privados en la medida en que los permisos de archivos de Linux restringen el acceso a ellos, al igual que en cualquier sistema Linux / Unix.

Cualquier persona con acceso de nivel raíz 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 creadora podrá acceder a ellos (esto generalmente no se hace y debes tomar medidas específicas para hacer que dos aplicaciones se ejecuten con el mismo UID, por lo que probablemente no sea un gran preocupación). Finalmente, si alguien fuera capaz de montar el sistema de archivos de su dispositivo sin usar 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 información escrita por su aplicación), querrá encriptarlo. Si estás tan preocupado por ellos, vas a necesitar averiguar exactamente cuánta protección es necesaria para el nivel de riesgo que ves. Hay una discusión muy extensa sobre esto en Application Security para Android Platform , recién publicado en diciembre de 2011 (descargo de responsabilidad: soy el autor de este libro).

Las Preferencias Compartidas no son más que archivos XML en su carpeta de teléfonos / datos / datos /, de modo que cualquier aplicación o usuario con privilegios de superusuario en un dispositivo rooteado puede acceder a sus Preferencias Compartidas, incluso si se crearon con MODE_PRIV

Todavía hay una manera de protegerlo de todos … Por favor, revise este enlace. Aquí puede almacenar datos en pref con encriptación, la clase es autoexplicativa y muy fácil de usar.

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

Como dicen otros, cualquiera puede acceder a él, pero en este caso nadie puede leer datos dentro de él, ya que está encriptado. Por lo tanto, es seguro. Para la máxima seguridad, mi sugerencia será generar la clave utilizada para el cifrado en tiempo de ejecución en lugar de codificarla de forma rígida. Hay muchas formas de hacerlo 🙂

Normalmente, no, no se puede acceder 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 rooteado puede acceder a su SharedPreference s, incluso si se crearon con MODE_PRIV