L'un des meilleurs moyens de stocker les mots de passe en toute sécurité consiste à les saler et à les hacher. Le salage et le hachage convertissent un mot de passe simple en une valeur unique difficile à inverser. La bibliothèque bcrypt vous permet de hacher et de saler les mots de passe dans Node.js avec très peu d'effort.

Qu'est-ce que le hachage de mot de passe ?

Hachage du mot de passe signifie passer un mot de passe en texte brut à travers un algorithme de hachage pour générer une valeur unique. Quelques exemples d'algorithmes de hachage sont bcrypt, scrypt et SHA. L'inconvénient du hachage est qu'il est prévisible.

Chaque fois que vous transmettez la même entrée à un algorithme de hachage, il générera la même sortie. Un pirate ayant accès au mot de passe haché peut désosser le cryptage pour obtenir le mot de passe d'origine. Ils peuvent utiliser des techniques telles que attaques par force brute ou tables arc-en-ciel. C'est là que le salage entre en jeu.

Qu'est-ce que le salage de mots de passe ?

instagram viewer

Durcissement du mot de passe ajoute une chaîne aléatoire (le sel) à un mot de passe avant de le hacher. De cette façon, le hachage généré sera toujours différent à chaque fois. Même si un pirate obtient le mot de passe haché, il lui est impossible de découvrir le mot de passe d'origine qui l'a généré.

Comment utiliser bcrypt pour hacher et vérifier un mot de passe

bcrypt est un module npm qui simplifie le salage et le hachage des mots de passe.

Étape 1: Installer bcrypt

Utilisation de npm :

npm installer bcrypt

Utiliser du fil :

fil ajouter bcrypt

Étape 2: Importer bcrypt

constante bcrypt = exiger("bcrypt")

Étape 3: générer un sel

Pour générer le sel, appelez le bcrypt.genSalt() méthode. Cette méthode accepte une valeur entière qui est le facteur de coût qui détermine le temps nécessaire pour hacher un mot de passe. Plus le facteur de coût est élevé, plus l'algorithme prend de temps et plus il est difficile d'inverser le hachage en utilisant la force brute. Une bonne valeur doit être suffisamment élevée pour sécuriser le mot de passe, mais également suffisamment basse pour ne pas ralentir le processus. Il varie généralement entre 5 et 15. Dans ce tutoriel, nous utiliserons 10.

bcrypt.genSalt (10, (erreur, sel) => {
// utiliserselpourhacherle mot de passe
})

Étape 4: hachez le mot de passe

Transmettez le mot de passe en clair et le sel généré au hacher() méthode:

bcrypt.genSalt (10, (erreur, sel) => {
bcrypt.hash (mot de passe en clair, sel, une fonction(euh, hachage) {
// Stocke le hachage dans la base de données
});
})

Une fois que vous avez généré le hachage, stockez-le dans la base de données. Vous l'utiliserez pour vérifier un mot de passe et authentifier un utilisateur essayant de se connecter.

Au lieu de générer le sel et le hachage séparément, vous pouvez également générer automatiquement le sel et le hachage à l'aide d'une seule fonction.

bcrypt.hash (mot de passe texte clair, 10, une fonction(euh, hachage) {
// stocke le hachage dans la base de données
});

Étape 5: Comparez les mots de passe à l'aide de bcrypt

Pour authentifier les utilisateurs, vous devrez comparer le mot de passe fourni avec celui de la base de données. bcrypt.compare() accepte le mot de passe en texte brut et le hachage que vous avez stocké, ainsi qu'une fonction de rappel. Ce rappel fournit un objet contenant toutes les erreurs survenues et le résultat global de la comparaison. Si le mot de passe correspond au hachage, le résultat est vrai.

bcrypt.compare (mot de passe en clair, hachage, une fonction(erreur, résultat) {
si (résultat) {
// le mot de passe est valide
}
});

Utilisation de Async/Attente

Vous pouvez hacher et vérifier les mots de passe en utilisant async/wait comme suit.

asynchroneune fonctionhashPassword(mot de passe en clair) {
constante hachage = attendre bcrypt.hash (mot de passe texte clair, 10);
// Stocke le hachage dans la base de données
}

// comparer le mot de passe
asynchroneune fonctioncomparePassword(texte en clairMot de passe, hachage) {
constante résultat = attendre bcrypt.compare (plaintextPassword, hachage);
retourner résultat;
}

Utiliser des promesses

La bibliothèque bcrypt prend également en charge l'utilisation des promesses.

une fonctionhashPassword(mot de passe en clair) {
bcrypt.hacher(mot de passe en clair, 10)
.then (hachage => {
// Stocke le hachage dans la base de données
})
.capture(err => {
console.log (erreur)
})
}

une fonctioncomparePassword(texte en clairMot de passe, hachage) {
bcrypt.comparer(mot de passe en clair, hacher)
.puis (résultat => {
retourner résultat
})
.capture(err => {
console.log (erreur)
})
}

Le hachage et le salage sont une victoire facile

Vous pouvez utiliser la bibliothèque bcrypt pour hacher et vérifier les mots de passe dans Node.js. Le hachage des mots de passe minimise les risques que les cybercriminels les utilisent pour accéder à des données ou à des services sensibles. Saler vos mots de passe hachés les rend encore plus sûrs. Outre le hachage, validez toujours la force du mot de passe comme mesure de sécurité supplémentaire.

Les 8 astuces les plus couramment utilisées pour pirater les mots de passe

Lire la suite

PartagerTweeterPartagerE-mail

Rubriques connexes

  • Programmation
  • Sécurité
  • Programmation
  • Javascript
  • Sécurité
  • Algorithmes

A propos de l'auteur

Marie Gathoni (21 articles publiés)

Mary Gathoni est une développeuse de logiciels passionnée par la création de contenu technique non seulement informatif mais également engageant. Lorsqu'elle ne code pas ou n'écrit pas, elle aime passer du temps avec des amis et être à l'extérieur.

Plus de Mary Gathoni

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner