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.
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
Relaterte temaer
- Programmering
- Sikkerhet
- Programmering
- JavaScript
- Sikkerhet
- Algoritmer
Om forfatteren
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.
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