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.

instagram viewer

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

DelTweetDelE-mail

Relaterede emner

  • Programmering
  • Sikkerhed
  • Programmering
  • JavaScript
  • Sikkerhed
  • Algoritmer

Om forfatteren

Mary Gathoni (21 artikler udgivet)

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.

Mere fra Mary Gathoni

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere