Sei in
Home > Android guide, news e download > Permessi Android: la guida per conoscerli tutti

Permessi Android: la guida per conoscerli tutti

Questo articolo è stato creato allo scopo di aiutare gli utenti che hanno poca conoscenza del sistema dei permessi su Android. In parole povere, i permessi danno accesso a dati ed informazioni presenti sul vostro dispositivo e sul vostro account.

Permessi normali e pericolosi

Ogni permesso garantisce l’accesso ad una determinata risorsa, permette di effettuare un’azione sul dispositivo o di accedere ai contenuti che vi si trovano. Vengono classificati in base alla loro “pericolosità”, tramite il livello di protezione.

Ogni singolo permesso è catalogato come normale o pericoloso:

  • i permessi normali forniscono all’applicazione che li richiede, dati o risorse fuori dalla propria sandbox (termine informatico usato per definire lo spazio di “azione” dedicato all’applicazione) e che comportano un rischio minimo per la privacy dell’utente o per il corretto funzionamento delle altre applicazioni. Un esempio: i permessi per cambiare la timezone del dispositivo. Per semplicità, i permessi normali sono già forniti alle applicazioni dal sistema Android. Pertanto non c’è nulla di cui preoccuparsi.
  • al contrario, i permessi pericolosi ricoprono aree dove le applicazioni necessitano dati o risorse che minano la privacy dell’utente, i dati salvati in memoria o il corretto funzionamento delle altre applicazioni. Prendete ad esempio il permesso che concede di leggere i Contatti degli utenti: un’applicazione malevola potrebbe cancellarvi tutti i contatti o peggio raccoglierli sui propri server.

Ed ecco la lista dei permessi pericolosi, che voi stessi dovrete concedere alle applicazioni :

  • READ_CALENDAR
  • WRITE_CALENDAR
  • CAMERA
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
  • RECORD_AUDIO
  • READ_PHONE_STATE
  • CALL_PHONE
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • ADD_VOICEMAIL
  • USE_SIP
  • PROCESS_OUTGOING_CALLS
  • BODY_SENSORS
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE

Nel prossimo paragrafo vi spiegherò in dettaglio ciascun permesso.

Gruppi di permessi

Tutti i permessi sono catalogati / raggruppati in 9 gruppi (tra le parentesi riporto i nomi originali in inglese):

  1. Calendario (Calendar)
  2. Camera (Camera)
  3. Contatti (Contacts)
  4. Localizzazione (Location)
  5. Microfono (Microphone)
  6. Telefono (Phone)
  7. Sensori (Body sensor)
  8. SMS (SMS)
  9. Memoria (Storage)

Il loro raggruppamento permette all’utente di abilitare più permessi in una sola azione. Per esempio, se abilitate l’accesso ai Contatti ad una applicazione, essa avrà entrambe le possibilità di accedere / leggere e modificare i vostri contatti.

Vediamo ora in dettaglio ogni gruppo ed i permessi che vi fanno parte:

  1. Calendario, gestione del calendario:
    • READ_CALENDAR : è il permesso specifico per leggere i dati dell’utente presenti sul calendario (eventi, compleanni)
    • WRITE_CALENDAR : è il permesso specifico per creare eventi (o altro) sul calendario dell’utente
  2. Camera, il cui permesso è CAMERA, che permette la presa di foto e registrazione dei video da tutte le fotocamere del dispositivo;
  3. Contatti, relativo gruppo usato per la gestione dei contatti:
    • READ_CONTACTS : è il permesso specifico per poter leggere tutti i contatti dell’utente presenti nel dispositivo
    • WRITE_CONTACTS : permette di creare o modificare i contatti dell’utente
    • GET_ACCOUNTS : permette l’accesso alla lista degli account presenti sul dispositivo (per account, si intende Twitter, Facebook e qualsiasi altra applicazione che usa il sistema di gestione degli account di Android)
  4. Localizzazione, che riguarda la localizzazione del dispositivo:
    • ACCESS_FINE_LOCATION : permette all’applicazione di accedere alla posizione precisa del dispositivo
    • ACCESS_COARSE_LOCATION : permette all’applicazione di accedere alla posizione approssimativa del dispositivo
  5. Microfono, il cui permesso è RECORD_AUDIO che permette di registrare l’audio dal dispositivo;
  6. Telefono, che raggruppa i permessi per effettuare o gestire le chiamate :
    • READ_PHONE_STATE / READ_PHONE_NUMBERS : sono i permessi che permettono di accedere alle informazioni relative al vostro telefono (per esempio, marca e modello) ed anche al numero associato al dispositivo, nonché lo stato delle chiamate ed alle informazioni sulla rete (cellulare) alla quale siete connessi, inutile dire che sono dati abbastanza interessanti
    • CALL_PHONE / ANSWER_PHONE_CALLS : permettono di lanciare e gestire le chiamate, senza passare dall’applicazione predefinita
    • READ_CALL_LOG e WRITE_CALL_LOG : sono i permessi che permettono ad una applicazione di leggere i log delle vostre chiamate e modificare i log stessi
    • ADD_VOICEMAIL : permette all’applicazione di aggiungere messaggi vocali
    • USE_SIP : permette all’applicazione di usare i servizi SIP, ad esempio, effettuare una video-chiamata tramite rete internet
    • PROCESS_OUTGOING_CALLS : l’applicazione avrà la possibilità di vedere il numero che state chiamando con l’opzione di re-direzionare la chiamata ad un numero differente o addirittura annullare la chiamata
  7. Sensori, ovvero BODY_SENSORS, è il permesso che permette di accedere ai dati misurati dai relativi sensori (per esempio, il battito cardiaco); sappiate che NON tutti i dispositivi hanno questi sensori!
  8. SMS o se proprio volete, accesso ai vostri messaggi :
    • SEND_SMS e RECEIVE_SMS : semplicemente i permessi che garantiscono la ricezione e l’invio di messaggi
    • READ_SMS : abilità un’applicazione di leggere il contenuto del messaggio
    • RECEIVE_WAP_PUSH : chi non ha mai ricevuto gli sfondi, le suonerie ed i giochi tramite WAP quando Nokia era il leader incontrastato? Ebbene questo servizio, se pur poco usato, esiste ancora, ma potete semplicemente non garantirlo ad un app che vi farà richiesta
    • RECEIVE_MMS : con questo permesso un’applicazione può monitorare gli MMS che ricevuti
  9. Memoria del vostro telefono, quindi lo spazio dove sono salvati tutti i vostri dati visibili a tutte le app :
    • READ_EXTERNAL_STORAGE : l’applicazione può leggere (quindi recuperare) i dati presenti nella memoria del vostro telefono (foto e tutte le cartelle presenti, create dalle altre applicazioni); sappiate che ogni applicazione ha a disposizione una parte di memoria interna che le è dedicata (sandbox), dove solo l’applicazione stessa può accedervi e la memoria esterna (pubblica) che è disponibile a tutte le applicazioni. Questo permesso si rivolge solo alla memoria esterna
    • WRITE_EXTERNAL_STORAGE : se dichiarata, l’applicazione potrà sia leggere (vedi il punto sopra) e scrivere sulla memoria esterna (pubblica). Se ci fate caso, tutti i maggiori manager di file, richiedono proprio questi permessi, per fornirvi la lista dei vostri contenuti. In caso abbiate fatto il ROOT del vostro telefono, andrete ad esporvi ancora di più i vostri dati, in quanto la memoria interna sarà esposta ad app che normalmente non vi hanno accesso

Rischi e conclusioni

Fino ad Android 5.1 (AKA Lollipop) i permessi erano abilitati al momento dell’installazione, permettendo alle applicazioni di essere “funzionali” sin dal primo avvio.

Con l’avvento di Android 6.0 (AKA Marshmallow) i permessi ora vi verranno richiesti durante l’esecuzione dell’applicazione, dandovi così la possibilità di decidere cosa fare!

Prendiamo l’esempio di Twitter : su un dispositivo Android con la versione 5.1 o inferiore, ha liberamente accesso ai Contatti, Localizzazione o alla Memoria (tanto per citare i più sensibili, visto che in realtà i permessi richiesti sono di più!) senza nessun pre-avviso, se non all’installazione.

Quindi una volta avviata l’applicazione, agli sviluppatori sarebbero bastate poche linee di codice per accedere ai vostri contatti e farci qualsiasi cosa. Come è altrettanto semplice ricercare i dati (qualsiasi) sulla memoria pubblica del dispositivo e prendere ciò che vi è salvato.

Ad oggi (Novembre 2017), mentre sto redigendo questa guida, solo il 51.8% degli utenti Android ha la possibilità di negare i permessi alle applicazioni. Tutti gli altri utenti saranno vulnerabili fino a quando non riceveranno l’update ad Android 6.0, o peggio, fino a quando non compreranno un nuovo dispositivo con la suddetta versione (o superiore).

permissions_runtime

Il mio consiglio è valutare passo dopo passo cosa vi chiede una determinata applicazione. Non abbiate paura a rifiutare il permesso: vi verrà richiesto di nuovo se veramente necessario.

Chiedetevi sempre se il gioco vale la candela: è veramente necessario che un gioco vi chieda l’accesso ai vostri contatti? Se si, per farci cosa?

Difficile conoscere o ricordare tutti i permessi: potete consultare la fonte per più informazioni e sappiate che esiste una lista più esaustiva, ma priva di spiegazioni in dettaglio.

Potete seguire l’evoluzione del tasso di adozione Android su questo link, in quanto quello ufficiale non fornisce molti dettagli, né lo storico dei mesi precedenti.

Top