Comment envoyer / stocker en toute sécurité un mot de passe dans un service de connexion Spring RESTful


blue123:

Dans le service de connexion, un utilisateur publie un json en tant que charge utile dans un service de connexion Spring RESTful comme ci-dessous:

{
 "username": "john",
 "password": "doe"
}

Une fois que le service Spring RESTful reçoit l'appel, il compare le mot de passe avec le magasin de la base de données en texte brut.

Je vois deux problèmes dans la mise en œuvre actuelle.

  1. Le mot de passe est envoyé via HTTP en tant que charge utile POST en texte brut.
  2. Le mot de passe correct stocké dans la base de données est en texte brut.

Pour le problème 2, j'ai décidé d'utiliser bcrypt pour crypter le mot de passe stocké dans la base de données comme mentionné dans cet article . Est-ce un bon moyen?

Pour le problème 1, je ne sais pas s'il existe une meilleure pratique pour cela. Quelqu'un peut-il partager vos insigts? Merci!

Éditer:

Désolé d'avoir oublié de mentionner que le client et le serveur discutent via HTTPS. Et le mot de passe est envoyé en charge utile POST.

Dans ce cas, la solution au problème 2 (stocker le mot de passe correct crypté) dans la base de données est correcte, non?

Qu'en est-il du problème 1, dans ce cas, le mot de passe peut être envoyé dans la charge utile de la publication en texte brut?

xenteros:
  1. Utilisez HTTPS.
  2. Le mot de passe doit être dans le corps de la demande, utilisez donc POST.
  3. Ne hachez pas le mot de passe avant de l'envoyer.
  4. Comparez le hachage stocké dans la base de données avec le mot de passe reçu par hachage.

Il n'y a aucune raison de crypter les mots de passe. C'est une mauvaise idée. Ils doivent être hachés et de préférence salés. Si quelqu'un vole votre base de données, il sera plus difficile de compromettre les mots de passe de vos utilisateurs.

Comment stocker en toute sécurité les mots de passe.

Articles connexes