SQLite
 sql >> Base de données >  >> RDS >> SQLite

Meilleure option pour stocker le nom d'utilisateur et le mot de passe dans l'application Android

Oui, c'est délicat sur Android. Vous ne voulez pas stocker le mot de passe en clair dans les préférences, car toute personne disposant d'un appareil rooté affichera essentiellement son mot de passe au monde. D'un autre côté, vous ne pouvez pas utiliser un mot de passe crypté, car vous devriez stocker votre clé de cryptage/décryptage quelque part sur l'appareil, encore une fois sensible à l'attaque racine.

Une solution que j'ai utilisée il y a quelque temps consiste à faire en sorte que le serveur génère un "ticket" qu'il renvoie à l'appareil, ce qui est valable pendant un certain temps. Ce ticket est utilisé par l'appareil pour toutes les communications, en utilisant bien sûr SSL afin que personne ne puisse voler votre ticket. De cette façon, l'utilisateur authentifie une fois son mot de passe sur le serveur, le serveur renvoie un ticket expirant et le mot de passe n'est jamais stocké nulle part sur l'appareil.

Plusieurs mécanismes d'authentification à trois pattes, comme OpenID, Facebook, voire les API Google, utilisent ce mécanisme. Les inconvénients sont que de temps en temps, lorsque le ticket expire, l'utilisateur doit se reconnecter.

En fin de compte, cela dépend du degré de sécurité que vous souhaitez pour votre application. S'il s'agit simplement de distinguer les utilisateurs et qu'aucune information super secrète n'est stockée comme des comptes bancaires ou des groupes sanguins, alors peut-être que l'enregistrement du PWD en clair sur l'appareil est très bien :)

Bonne chance, quelle que soit la méthode que vous choisissez, c'est la meilleure pour votre situation particulière !

Edit :je dois noter que cette technique transfère la responsabilité de la sécurité au serveur - vous voudrez utiliser des hachages salés pour la comparaison de mots de passe sur le serveur, une idée que vous verrez dans certains des autres commentaires pour cette question. Cela empêche le mot de passe en clair d'apparaître n'importe où sauf dans la vue EditText sur l'appareil, la communication SSL avec le serveur et la RAM du serveur pendant qu'il sale et hache le mot de passe. Il n'est jamais stocké sur disque, ce qui est une bonne chose™.