2011-05-25 9 views
13

¿Cómo podemos asegurarnos de que ciertas aplicaciones no puedan acceder a mis datos almacenados en el proveedor de contenido donde en ciertas otras aplicaciones pueden acceder a eso? Básicamente, debo permitir que alguna aplicación de mi interés acceda a mis datos almacenados en el proveedor de contenido, pero no quiero que todas las aplicaciones puedan acceder a esos datos. ¿Cómo puedo conseguir esto?Cómo restringir los datos del proveedor de contenido a través de las aplicaciones

Gracias.

Respuesta

16

La manera más fácil es proteger al proveedor de contenido con un permiso que defina. Haga que sea un permiso de firma para que solo las aplicaciones firmadas con su certificado puedan obtenerlo.

Ver:

http://developer.android.com/guide/topics/security/security.html

http://developer.android.com/reference/android/R.styleable.html#AndroidManifestProvider

http://developer.android.com/guide/topics/manifest/provider-element.html

Si haciendo esto sobre la base de los certificados no es suficiente, tendrá que escribir el permiso comprueba a sí mismo. Esto se hace llamando a Binder.getCallingUid() para las llamadas entrantes a sus aplicaciones, y para decidir si el uid dado tiene permiso para acceder a su proveedor. En realidad, implementar una política diferente que sea realmente segura requiere de mucho pensamiento y diseño cuidadoso.

4

En el AndroidManifest.xml, en la pantalla con las propiedades de su ContentProvider, tiene dos campos:

permiso de lectura WritePermission

Por lo tanto, se puede definir cadenas seguras (también puede ser camino a algún archivo) que son permisos para acceder a su ContentProvider.

Las aplicaciones que desean acceder a su proveedor de contenido deben tener las que se agregan en sus elementos de Permisos de uso.

+0

qué pasa si esa cadena de permiso de lectura se filtró y alguna aplicación de terceros también lo agregó a su manifiesto. Cómo el proveedor puede evitar tales casos – Javanator

Cuestiones relacionadas