web-dev-qa-db-fra.com

Pratiques de stockage du nom d'utilisateur / mot de passe dans les applications Web

J'ai lu la question suivante: Stockage du mot de passe dans Java mais je ne trouve pas les réponses utiles pour mon cas.

Voici donc ma question en rapport avec cela. J'ai une Java application Web avec un accès sécurisé DataBase dorsal avec nom d'utilisateur et mot de passe.

À l'heure actuelle, le nom d'utilisateur/mot de passe se trouve dans un fichier .properties sur le serveur Web. Le serveur est sécurisé, mais l'avoir comme ça en texte clair me dérange un peu.

J'ai essayé à un moment donné d'utiliser des magasins sécurisés pour crypter/décrypter le nom d'utilisateur et le mot de passe, mais les magasins sont eux-mêmes protégés par un mot de passe, alors où dois-je les stocker? Je reviens à la case départ.

Donc? Quelle est la meilleure façon de stocker le nom d'utilisateur/mots de passe pour se connecter à d'autres systèmes (base de données, service Web, etc.)

18
johnD

Le serveur doit être en mesure d'accéder à certaines ressources R. Si un attaquant a le contrôle total du serveur, cet attaquant peut par définition accéder maintenant à toutes les ressources auxquelles le serveur peut accéder. Il n'y a absolument rien que vous puissiez faire à ce sujet, sauf sécuriser le serveur.

Si l'attaquant n'a pas le contrôle total du serveur mais a accès au système de fichiers du serveur, la question est de savoir si le serveur doit démarrer de manière autonome (sans aucune aide externe). Si le serveur doit démarrer de manière autonome, toutes les données nécessaires pour accéder à la ressource R doivent résider quelque part dans le système de fichiers du serveur et sont donc disponibles pour l'attaquant. Le mieux que vous puissiez faire est d'essayer de brouiller le mot de passe - bonne chance avec ça.

Si le serveur peut utiliser une aide externe pour démarrer, la meilleure option serait d'exiger qu'un administrateur saisisse le mot de passe lors du démarrage (et conserve le mot de passe stocké dans la RAM). Si ce n'est pas une option pratique (ce n'est généralement pas le cas), vous pouvez sécuriser le mot de passe à l'aide d'un jeton USB (par exemple, stocker un mot de passe chiffré et utiliser le jeton USB pour le déchiffrer).

TL; DR: en supposant que vous ne pouvez pas saisir manuellement le mot de passe à chaque démarrage du serveur, vous ne pouvez pas faire grand-chose à part protéger le serveur lui-même.

13
David Wachtfogel