En af de bedste måder at opbevare adgangskoder på er at salte og hash dem. Saltning og hash konverterer en almindelig adgangskode til en unik værdi, som er svær at omdanne. Bcrypt-biblioteket lader dig hash og salt adgangskoder i Node.js med meget lidt indsats.
Hvad er password hashing?
Password hashing betyder at sende en almindelig tekstadgangskode gennem en hashing-algoritme for at generere en unik værdi. Nogle eksempler på hashing-algoritmer er bcrypt, scrypt og SHA. Ulempen ved hashing er, at den er forudsigelig.
Hver gang du sender det samme input til en hashing-algoritme, vil det generere det samme output. En hacker med adgang til den hash-kodede adgangskode kan omvendt konstruere krypteringen for at få den originale adgangskode. De kan bruge teknikker som f.eks brute-force angreb eller regnbueborde. Det er her, saltning kommer ind.
Hvad er Password Salting?
Password saltning tilføjer en tilfældig streng (saltet) til en adgangskode, før den hash. På denne måde vil den genererede hash altid være forskellig hver gang. Selvom en hacker får det hash-kodede kodeord, er det upraktisk for dem at finde den originale adgangskode, der genererede den.
Sådan bruges bcrypt til at hash og bekræfte en adgangskode
bcrypt er et npm-modul, der forenkler adgangskodesaltning og hashing.
Trin 1: Installer bcrypt
Brug af npm:
npm installere bcrypt
Brug af garn:
garn tilføje bcrypt
Trin 2: Importer bcrypt
konst bcrypt = kræve("bcrypt")
Trin 3: Generer et salt
For at generere saltet, ring til bcrypt.genSalt() metode. Denne metode accepterer en heltalsværdi, som er den omkostningsfaktor, der bestemmer den tid, det tager at hash et kodeord. Jo højere omkostningsfaktoren er, jo mere tid tager algoritmen, og jo sværere er det at vende hashen ved hjælp af brute force. En god værdi skal være høj nok til at sikre adgangskoden, men også lav nok til ikke at bremse processen. Det spænder normalt mellem 5 og 15. I denne vejledning vil vi bruge 10.
bcrypt.genSalt (10, (fejl, salt) => {
// brugsalttilhashadgangskode
})
Trin 4: Hash adgangskoden
Send den almindelige adgangskode og det genererede salt til hash() metode:
bcrypt.genSalt (10, (fejl, salt) => {
bcrypt.hash (plaintextPassword, salt, fungere(fejl, hash) {
// Gem hash i databasen
});
})
Når du har genereret hashen, skal du gemme den i databasen. Du skal bruge den til at bekræfte en adgangskode og godkende en bruger, der prøver at logge ind.
I stedet for at generere salt og hash separat, kan du også automatisk generere salt og hash ved hjælp af en enkelt funktion.
bcrypt.hash (plaintextPassword, 10, fungere(fejl, hash) {
// gem hash i databasen
});
Trin 5: Sammenlign adgangskoder ved hjælp af bcrypt
Til autentificere brugere, bliver du nødt til at sammenligne den adgangskode, de giver, med den i databasen. bcrypt.compare() accepterer almindelig tekstadgangskode og hash, som du har gemt, sammen med en tilbagekaldsfunktion. Det tilbagekald leverer et objekt, der indeholder eventuelle fejl, der er opstået, og det overordnede resultat fra sammenligningen. Hvis adgangskoden matcher hashen, er resultatet sandt.
bcrypt.compare (plaintextPassword, hash, fungere(fejl, resultat) {
if (resultat) {
// adgangskoden er gyldig
}
});
Brug af Async/Await
Du kan hash og verificere adgangskoder ved at bruge async/wait som følger.
asynkronfungerehashPassword(almindelig tekstadgangskode) {
konst hash = vente bcrypt.hash (plaintextPassword, 10);
// Gem hash i databasen
}
// sammenlign adgangskode
asynkronfungeresammenlignePassword(almindelig tekstPassword, hash) {
konst resultat = vente bcrypt.compare (plaintextPassword, hash);
Vend tilbage resultat;
}
Brug af løfter
Bcrypt-biblioteket understøtter også brugen af løfter.
fungerehashPassword(almindelig tekstadgangskode) {
bcrypt.hash(almindelig tekstadgangskode, 10)
.then (hash => {
// Gem hash i databasen
})
.fangst(fejl => {
konsol.log (fejl)
})
}
fungeresammenlignePassword(almindelig tekstPassword, hash) {
bcyrpt.sammenligne(almindelig tekstadgangskode, hash)
.da (resultat => {
Vend tilbage resultat
})
.fangst(fejl => {
konsol.log (fejl)
})
}
Hashing og saltning er en nem gevinst
Du kan bruge bcrypt-biblioteket til at hash og verificere adgangskoder i Node.js. Hashing af adgangskoder minimerer chancerne for, at cyberkriminelle bruger dem til at få adgang til følsomme data eller tjenester. Saltning af dine hashed-adgangskoder gør dem endnu mere sikre. Bortset fra hashing, valider altid adgangskodestyrken som en ekstra sikkerhedsforanstaltning.
De 8 mest almindelige tricks, der bruges til at hacke adgangskoder
Læs Næste
Relaterede emner
- Programmering
- Sikkerhed
- Programmering
- JavaScript
- Sikkerhed
- Algoritmer
Om forfatteren

Mary Gathoni er en softwareudvikler med en passion for at skabe teknisk indhold, der ikke kun er informativt, men også engagerende. Når hun ikke koder eller skriver, nyder hun at hænge ud med venner og være udendørs.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere