OASAM-CONF-012: Improper Shared Preferences permissions

Descripción

  La creación de Shared Preferences con el permiso “MODE_WORLD_READABLE” permite la lectura global de dichas Shared Preferences, por lo que no se recomienda su uso salvo que sea absolutamente necesario. De la misma manera, se recomienda evitar cuando sea posible establecer a las Shared Preferences el permiso “MODE_WORLD_WRITABLE”.
A continuación podemos ver un ejemplo de declaración de fichero peligrosa:
        SharedPreferences prefsAllWrite =  getSharedPreferences("MisPreferenciasWrite",MODE_WORLD_WRITEABLE);

Riesgos
Establecer permisos de lectura global expone la información contenida en un fichero. Si se le proporciona el permiso de escritura, cualquier aplicación podría modificar el contenido de dicho fichero, aumentando la superficie de ataque.
       
Recomendaciones
Se recomienda crear ficheros con permisos de lectura o escritura global solo en el caso de ser estrictamente necesario. En general, para almacenar datos, se deben seguir las siguientes directivas:
1. Shared Preferences. Para almacenar opciones en forma de pares de valores
2. Internal Storage. Para almacenar datos en la memoria del dispositivo, por defecto este tipo de almacenamiento no es accesible a terceras aplicaciones
3. External Storage. Para almacenar datos en sitios compartidos por todas las aplicaciones del dispositivo, como las tarjetas SD.
4. SQLite Database. Para almacenar datos en BBDD SQLite. Por defecto este tipo de bases de datos no son accesibles a terceras aplicaciones.
5. Network Connection. Para almacenar datos en servicios a través de la red. En estos casos se recomienda extremar las precauciones y utilizar métodos de cifrado.

Referencias

1. http://developer.android.com/reference/android/content/SharedPreferences.html