web-dev-qa-db-fra.com

Java - Comment stocker le mot de passe utilisé dans l'application?

Je développe une application permettant de lire des données d’une base de données . La connexion à la base de données s'effectue via le mécanisme de connexion standard/mot de passe.

Le problème est le suivant: comment stocker le mot de passe de la base de données? Si je le stocke en tant que membre de la classe, il peut être facilement récupéré via une opération de décompilation.

Je pense que l'obscurcissement ne résout pas le problème, puisqu'un mot de passe de chaîne peut être trouvé facilement, même dans le code obscurci.

Quelqu'un a des suggestions?

26
Mauri

Ne codez jamais les mots de passe dans votre code. Cela a été évoqué récemment dans le Top 25 des erreurs de programmation les plus dangereuses

Il est extrêmement pratique de coder en dur un compte secret et un mot de passe dans votre logiciel - pour les ingénieurs en reverse engineering qualifiés. Si le mot de passe est le même pour tous vos logiciels, chaque client devient vulnérable lorsque ce mot de passe devient inévitablement connu. Et parce que c'est codé en dur, c'est une douleur énorme à réparer.

Vous devez stocker les informations de configuration, y compris les mots de passe, dans un fichier séparé que l'application lit au démarrage. C’est le seul moyen réel d’empêcher le mot de passe de fuir à la suite de la décompilation (ne le compilez jamais dans le binaire pour commencer).

Voir cette réponse merveilleuse pour une explication plus détaillée: Par William Brendel

21
COD3BOY

Pour une application simple et petite pour laquelle vous ne souhaitez pas impliquer beaucoup d'autres mesures de sécurité, cette option devrait probablement être une option de configuration. Lorsque vous déployez votre application, un fichier de configuration dans lequel les propriétés de connexion à la base de données sont spécifiées peut être lu. Cela signifie que l'application en soi ne connaît pas le mot de passe, mais vous devez accéder au serveur pour trouver le mot de passe.

1
Albin

Certaines données devraient être configurables. Tout à l'heure, comme vous l'avez dit, il peut s'agir d'une username et password ou d'une datas commune; Normalement, nous créons une page de configuration de propriété. Ce que j’avais l'habitude de faire est d'utiliser un fichier XML et de conserver votre password/username dans un format encrypted. Vous pouvez facilement analyser une XML pour récupérer votre mot de passe pour la connectivité.

Cela garantit que vos mots de passe peuvent être modifiés à tout moment. Cela ne concerne pas uniquement les mots de passe. mais toutes les données que vous utilisez, qui doivent être configurées de temps en temps.

1
Kris