2011-11-17 9 views
13

Sto scrivendo 1) un'app che memorizza un nome utente e una password nell'AccountManager e 2) un'app di servizio in background separata che accede a quelle credenziali per accedere ai miei server, ecc. Giocando con questo, trovo che sono in grado di chiamare AccountManager.getPassword (account) dal servizio (app 2) per accedere al tipo di account che ho aggiunto all'accountManager utilizzando l'altra app (app 1).Cosa protegge la password di AccountManager di Android da essere letta da altre app?

A causa di questo, sto cominciando a chiedersi cosa si ferma un app dannoso arbitraria da 1) compresi i campi sul manifesto per avere accesso alla gestione del conto, e quindi poi 2) da iterazione attraverso tutti i conti di un tipo particolare e chiamando mAccountManger.getPassword (account) su di essi. So che durante l'installazione, viene visualizzata una finestra di dialogo con tutte le autorizzazioni richieste da un'app, ma non penso che possiamo contare sull'utente medio per rifiutare un'app perché richiede autorizzazioni sospette.

C'è un modo per impedire a getPassword di essere richiamato su un tipo di account? Esistono modi per proteggere gli account nell'AccountManager dalle app che hanno ricevuto molte autorizzazioni dell'account?

risposta

9

La protezione dei dati dell'account si basa sull'ID utente Linux (UID) del processo che effettua la richiesta. (Vedere Security and Permissions nella guida.) Ogni account è associato a un autenticatore dell'account (che ha un UID) e il processo che chiama getPassword (o diversi altri metodi) deve avere lo stesso UID dell'autenticatore.

Problemi correlati