Sicurezza integrata Android per le app?

11

Ogni volta che accedi a Google Play Store e installa un'app, viene visualizzato un elenco di tutti gli accessi necessari e viene richiesta una conferma per procedere con l'installazione.

Immaginiamo che mi piacerebbe installare Angry Birds:

  • In-app purchases
  • Identity
  • Photos/Media/Files
  • Wifi connection information
  • Device ID & call information

In che modo esattamente Play Store viene fornito con questo elenco?

  • Il loro algoritmo effettivamente analizza il codice per trovare quell'elenco?
  • Il venditore è responsabile di elencare l'accesso necessario?
  • Un modo diverso?
posta 07.08.2015 - 13:49
fonte

2 risposte

12

Il modello di sicurezza per Android è che tutte le risorse protette (Identità, Contatti, Fotocamera, GPS, ecc. [Elenco completo delle autorizzazioni che puoi richiedere qui] ) sono protetti all'interno dell'API del sistema operativo. Ciò significa che un'app non ha accesso diretto all'hardware, ma deve chiedere al sistema operativo di parlarne con l'hardware. In questo modo, il sistema operativo ha la possibilità di controllare le autorizzazioni dell'app e rifiutare di fornire i dati.

Un esempio:

Diciamo che scrivo un'app che vuole accedere alla posizione GPS, devo fare due cose:

  1. Al momento dell'installazione, richiedi le autorizzazioni appropriate nel file manifest manifest.xml :

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

  2. In fase di esecuzione, chiedi al sistema operativo di darmi la posizione GPS:

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

Durante quella chiamata a .getLastKnownLocation(...) il sistema operativo controllerà che la mia app abbia l'autorizzazione ACCESS_FINE_LOCATION . Se lo fa, allora mi restituirà i dati sulla posizione, in caso contrario verrà lanciato un java.lang.SecurityException e rifiuta di fornirmi dati.

    
risposta data 07.08.2015 - 16:26
fonte
18

Ogni autorizzazione deve essere dichiarata in AndriodManifest.xml prima che un'app possa usarli. Ad esempio:

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

per poter ricevere SMS.

Questo manifest verrà anche utilizzato per elencare le autorizzazioni mostrate quando si scarica l'app nello store.

    
risposta data 07.08.2015 - 13:56
fonte

Leggi altre domande sui tag