¿Seguridad incorporada de Android para aplicaciones?

11

Cuando vaya a Play Store de Google e instale una aplicación, se mostrará una lista de todos los accesos necesarios y se requerirá una confirmación para continuar con la instalación.

Imaginemos que me gustaría instalar Angry Birds:

  
  • compras dentro de la aplicación
  •   
  • identidad
  •   
  • Fotos / Medios / Archivos
  •   
  • información de conexión wifi
  •   
  • ID de dispositivo & información de la llamada
  •   

¿Cómo viene Play Store exactamente con esta lista?

  • ¿Su algoritmo analiza realmente el código para obtener esa lista?
  • ¿Es el proveedor responsable de enumerar los accesos necesarios?
  • ¿Una forma diferente?
pregunta 07.08.2015 - 13:49
fuente

2 respuestas

12

El modelo de seguridad para Android es que todos los recursos protegidos (Identidad, Contactos, Cámara, GPS, etc., [Lista completa de permisos que puede solicitar aquí] ) están protegidos dentro de la API del sistema operativo. Eso significa que una aplicación no tiene acceso directo al hardware, sino que tiene que pedirle al sistema operativo que se comunique con el hardware para ello. De esa manera, el sistema operativo tiene la oportunidad de verificar los permisos de la aplicación y negarse a proporcionar los datos.

Un ejemplo:

Supongamos que escribo una aplicación que desea acceder a la ubicación GPS, tengo que hacer dos cosas:

  1. En el momento de la instalación, solicite los permisos apropiados en el archivo de manifiesto manifest.xml :

    <manifest ... > <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ... </manifest>

  2. En el tiempo de ejecución, pida al sistema operativo que me proporcione la ubicación del GPS:

    String locationProvider = LocationManager.GPS_PROVIDER; Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);

Durante esa llamada a .getLastKnownLocation(...) , el sistema operativo verificará que mi aplicación tenga el permiso ACCESS_FINE_LOCATION . Si lo hace, entonces me devolverá los datos de ubicación, si no, arrojará una java.lang.SecurityException y se niegan a darme cualquier información.

    
respondido por el Mike Ounsworth 07.08.2015 - 16:26
fuente
18

Cada permiso debe ser declarado en el AndriodManifest.xml antes de que una aplicación pueda usarlos. Por ejemplo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.myapp" >
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    ...
</manifest>

para poder recibir SMS.

Este manifiesto también se utilizará para enumerar los permisos que se muestran al descargar la aplicación en la tienda.

    
respondido por el BadSkillz 07.08.2015 - 13:56
fuente

Lea otras preguntas en las etiquetas