SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Melhor opção para armazenar nome de usuário e senha no aplicativo Android


Sim, isso é complicado no Android. Você não deseja armazenar a senha de texto simples nas preferências, porque qualquer pessoa com um dispositivo com root basicamente exibirá sua senha para o mundo. Por outro lado, você não pode usar uma senha criptografada, porque teria que armazenar sua chave de criptografia/descriptografia em algum lugar do dispositivo, novamente suscetível ao ataque de root.

Uma solução que usei há algum tempo é fazer com que o servidor gere um "ticket" que ele passa de volta para o dispositivo, o que é bom por um determinado período de tempo. Este tíquete é usado pelo dispositivo para todas as comunicações, usando SSL, é claro, para que as pessoas não possam roubar seu tíquete. Dessa forma, o usuário autentica sua senha no servidor uma vez, o servidor envia de volta um ticket expirado e a senha nunca é armazenada em nenhum lugar do dispositivo.

Vários mecanismos de autenticação de três pernas, como OpenID, Facebook e até APIs do Google, usam esse mecanismo. As desvantagens são que, de vez em quando, quando o ticket expira, o usuário precisa fazer login novamente.

Em última análise, depende de quão seguro você deseja que seu aplicativo seja. Se isso é simplesmente para distinguir os usuários, e nenhuma informação super-secreta está sendo armazenada, como contas bancárias ou tipos sanguíneos, talvez seja bom salvar o PWD em texto simples no dispositivo :)

Boa sorte, qualquer método que você decidir é o melhor para sua situação particular!

Edit:devo observar que essa técnica transfere a responsabilidade da segurança para o servidor - você desejará usar hashes salgados para comparação de senhas no servidor, uma ideia que você verá em alguns dos outros comentários para esta pergunta. Isso evita que a senha de texto simples apareça em qualquer lugar, exceto na Visualização EditText no dispositivo, na comunicação SSL com o servidor e na RAM do servidor enquanto ele faz o salt e o hash da senha. Ele nunca é armazenado em disco, o que é uma coisa boa™.