Seguridad en aplicaciones Android: Custom permissions

Consigue gratis tu cuenta

Crea una API REST con Node.js y MongoDB

En este curso vas a aprender a crear una API REST con Node.js y MongoDB, además de crear un entorno de desarrollo con Docker y Docker Compose.

Comenzar ahora

Android_seguridad_3 La plataforma Android dispone de una serie de premisos por defecto que se utilizan para asegurar los servicios del sistema y componentes de aplicaciones.

Esto normalmente suele ser suficiente protección en la mayoría de casos, pero a menudo necesitamos compartir componentes entre aplicaciones y es aquí donde entra la falla de seguridad, puesto que tendremos expuestas nuestras aplicaciones.

Para suplirlo podemos generar nuestros propios permisos, que evitaran que cualquiera puede acceder a nuestra aplicación.

Primero de todo crearemos el label en strings.xml:

<string name="custom_permission_label">Custom Permission</string>.

Añadimos el permiso a nuestra aplicación en el AndroidManifest.xml:

<permission android:name="android.permission.CUSTOM_PERMISSION" android:protectionLevel="normal" android:description="My custom permission" android:label="@string/custom_permission_label">

Donde la etiqueta android:protectionLevel puede tener los siguientes valores:

  • normal: Este permiso se usa para definir accesos no-peligrosos.
  • dangerous: Se utiliza para definir permisos que exponen al usuarios en riesgo fiscal y legal.
  • signature: Garantiza autonomía a aplicaciones que está firmadas con la misma key que la aplicación que lo define.
  • signatureOrSystem: Este permiso está definido para cualquier aplicaciones que forme parte del sistema o está firmada con la misma key que la aplicación que lo define.
Si solo queremos compartir nuestros componentes entre aplicaciones que nosotros mismos hemos desarrollado, usaremos la etiqueta signature.

Y para hacer uso de dicho permiso en cualquier componente podremos hacerlo como como en el resto de los permisos:

<component... android:permission="android.permission.CUSTOM_PERMISSION"> </component>
Donde component puede ser un Activity, Content Provider, Service...
Más información: Para ver más a fondo la información sobre los permisos visitar la documentación.

¿Quieres seguir aprendiendo?