En av de beste måtene å lagre passord på er å salte og hash dem. Salting og hashing konverterer et vanlig passord til en unik verdi som er vanskelig å reversere. Bcrypt-biblioteket lar deg hash og salt passord i Node.js med svært liten innsats.

Hva er passordhashing?

Passordhashing betyr å sende et vanlig tekstpassord gjennom en hashing-algoritme for å generere en unik verdi. Noen eksempler på hashing-algoritmer er bcrypt, scrypt og SHA. Ulempen med hashing er at den er forutsigbar.

Hver gang du sender den samme inngangen til en hashing-algoritme, vil den generere den samme utgangen. En hacker med tilgang til det hash-kodede passordet kan reversere krypteringen for å få det originale passordet. De kan bruke teknikker som f.eks brute-force angrep eller regnbuebord. Det er her salting kommer inn.

Hva er passordsalting?

Passordsalting legger til en tilfeldig streng (saltet) til et passord før det hashes. På denne måten vil hashen som genereres alltid være forskjellig hver gang. Selv om en hacker får tak i det hashed-passordet, er det upraktisk for dem å finne det originale passordet som genererte det.

instagram viewer

Hvordan bruke bcrypt til å hash og bekrefte et passord

bcrypt er en npm-modul som forenkler passordsalting og hashing.

Trinn 1: Installer bcrypt

Bruker npm:

npm installere bcrypt

Bruke garn:

garn legg til bcrypt

Trinn 2: Importer bcrypt

konst bcrypt = krever("bcrypt")

Trinn 3: Generer et salt

For å generere saltet, ring bcrypt.genSalt() metode. Denne metoden aksepterer en heltallsverdi som er kostnadsfaktoren som bestemmer tiden det tar å hash et passord. Jo høyere kostnadsfaktor, jo mer tid tar algoritmen, og jo vanskeligere er det å reversere hasjen ved å bruke brute force. En god verdi bør være høy nok til å sikre passordet, men også lav nok til ikke å bremse prosessen. Det varierer vanligvis mellom 5 og 15. I denne opplæringen vil vi bruke 10.

bcrypt.genSalt (10, (feil, salt) => {
// bruksalttilhasjpassord
})

Trinn 4: Hash passordet

Send det vanlige passordet og det genererte saltet til hash() metode:

bcrypt.genSalt (10, (feil, salt) => {
bcrypt.hash (plaintextPassword, salt, funksjon(feil, hasj) {
// Lagre hash i databasen
});
})

Når du har generert hashen, lagrer du den i databasen. Du vil bruke den til å bekrefte et passord og autentisere en bruker som prøver å logge på.

I stedet for å generere saltet og hashen separat, kan du også automatisk generere saltet og hashen ved å bruke en enkelt funksjon.

bcrypt.hash (plaintextPassword, 10, funksjon(feil, hasj) {
// lagre hash i databasen
});

Trinn 5: Sammenlign passord ved å bruke bcrypt

Til autentisere brukere, må du sammenligne passordet de gir med det i databasen. bcrypt.compare() godtar ren tekstpassordet og hashen du har lagret, sammen med en tilbakeringingsfunksjon. Denne tilbakeringingen gir et objekt som inneholder eventuelle feil som har oppstått, og det generelle resultatet fra sammenligningen. Hvis passordet samsvarer med hashen, er resultatet sant.

bcrypt.compare (plaintextPassword, hash, funksjon(feil, resultat) {
if (resultat) {
// passordet er gyldig
}
});

Bruker Async/Await

Du kan hash og bekrefte passord ved å bruke async/wait som følger.

asynkronfunksjonhashPassword(klartekstPassord) {
konst hasj = avvente bcrypt.hash (plaintextPassword, 10);
// Lagre hash i databasen
}

// sammenlign passord
asynkronfunksjonsammenlignPassord(klartekstPassord, hash) {
konst resultat = avvente bcrypt.compare (plaintextPassword, hash);
komme tilbake resultat;
}

Bruke løfter

Bcrypt-biblioteket støtter også bruk av løfter.

funksjonhashPassword(klartekstPassord) {
bcrypt.hash(klartekstPassord, 10)
.then (hash => {
// Lagre hash i databasen
})
.å fange(feil => {
konsoll.log (feil)
})
}

funksjonsammenlignPassord(klartekstPassord, hash) {
bcyrpt.sammenligne(klartekstPassord, hasj)
.da (resultat => {
komme tilbake resultat
})
.å fange(feil => {
konsoll.log (feil)
})
}

Hashing og salting er en enkel seier

Du kan bruke bcrypt-biblioteket til å hash og verifisere passord i Node.js. Hashing av passord minimerer sjansene for at nettkriminelle bruker dem for å få tilgang til sensitive data eller tjenester. Salting av hash-passord gjør dem enda sikrere. Bortsett fra hashing, valider alltid passordstyrken som et ekstra sikkerhetstiltak.

De 8 vanligste triksene som brukes til å hacke passord

Les Neste

DelekvitringDeleE-post

Relaterte temaer

  • Programmering
  • Sikkerhet
  • Programmering
  • JavaScript
  • Sikkerhet
  • Algoritmer

Om forfatteren

Mary Gathoni (21 artikler publisert)

Mary Gathoni er en programvareutvikler med en lidenskap for å lage teknisk innhold som ikke bare er informativt, men også engasjerende. Når hun ikke koder eller skriver, liker hun å henge med venner og være utendørs.

Mer fra Mary Gathoni

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere