Vienas iš geriausių būdų saugiai saugoti slaptažodžius – juos pasūdyti ir maišyti. Sūdymas ir maiša paverčia paprastą slaptažodį į unikalią vertę, kurią sunku pakeisti. Naudodami bcrypt biblioteką galite labai mažai pastangų pakeisti slaptažodžius Node.js.

Kas yra slaptažodžio maišos naudojimas?

Slaptažodžio maiša reiškia paprasto teksto slaptažodžio perdavimą per maišos algoritmą, kad būtų sukurta unikali reikšmė. Kai kurie maišos algoritmų pavyzdžiai yra bcrypt, scrypt ir SHA. Neigiamas maišos aspektas yra tai, kad jis yra nuspėjamas.

Kiekvieną kartą, kai perduodate tą pačią įvestį maišos algoritmui, jis generuos tą pačią išvestį. Įsilaužėlis, turintis prieigą prie maišos slaptažodžio, gali pakeisti šifravimą, kad gautų pradinį slaptažodį. Jie gali naudoti tokius metodus kaip žiaurios jėgos išpuoliai arba vaivorykštės lentelės. Čia atsiranda sūdymas.

Kas yra slaptažodžio sūdymas?

Slaptažodžio sūdymas prideda atsitiktinę eilutę (druską) prie slaptažodžio prieš jį maišydama. Tokiu būdu generuojama maiša kiekvieną kartą bus skirtinga. Net jei įsilaužėlis gauna maišos slaptažodį, jam nepraktiška atrasti pradinį slaptažodį, kuris jį sugeneravo.

Kaip naudoti „bcrypt“ slaptažodžiui maišyti ir patvirtinti

bcrypt yra npm modulis, kuris supaprastina slaptažodžių nustatymą ir maišą.

1 veiksmas: įdiekite „bcrypt“.

Naudojant npm:

npm diegti bcrypt

Naudojant verpalus:

verpalai pridėti bcrypt

2 veiksmas: importuokite bcrypt

konst bcrypt = reikalauti(„bcrypt“)

3 veiksmas: sukurkite druską

Norėdami sukurti druską, skambinkite bcrypt.genSalt() metodas. Šis metodas priima sveikojo skaičiaus reikšmę, kuri yra sąnaudų veiksnys, apibrėžiantis slaptažodžio maišos laiką. Kuo didesnis sąnaudų koeficientas, tuo daugiau laiko užtrunka algoritmas ir tuo sunkiau pakeisti maišą naudojant brutalią jėgą. Gera vertė turėtų būti pakankamai didelė, kad apsaugotų slaptažodį, bet taip pat pakankamai maža, kad nesulėtėtų proceso. Paprastai jis svyruoja nuo 5 iki 15. Šioje pamokoje naudosime 10.

bcrypt.genSalt (10, (err, druska) => {
// naudotidruskosįmaišosSlaptažodis
})

4 veiksmas: pakeiskite slaptažodį

Perduokite paprastą slaptažodį ir sugeneruotą druską hash () metodas:

bcrypt.genSalt (10, (err, druska) => {
bcrypt.hash (plaintextPassword, druska, funkcija(klaida, maiša) {
// Išsaugokite maišą duomenų bazėje
});
})

Sukūrę maišą, išsaugokite ją duomenų bazėje. Jį naudosite norėdami patvirtinti slaptažodį ir autentifikuoti vartotoją, bandantį prisijungti.

Užuot generuodami druską ir maišą atskirai, taip pat galite automatiškai generuoti druską ir maišą naudodami vieną funkciją.

bcrypt.hash (plaintextPassword, 10, funkcija(klaida, maiša) {
// saugoti maišą duomenų bazėje
});

5 veiksmas: palyginkite slaptažodžius naudodami bcrypt

Į autentifikuoti vartotojus, turėsite palyginti jų pateiktą slaptažodį su esančiu duomenų bazėje. bcrypt.palyginti () priima paprasto teksto slaptažodį ir maišą, kurią išsaugojote, kartu su atgalinio skambinimo funkcija. Šis atgalinis skambutis pateikia objektą, kuriame yra įvykusių klaidų, ir bendrą palyginimo rezultatą. Jei slaptažodis sutampa su maiša, rezultatas yra teisingas.

bcrypt.compare (plaintextPassword, hash, funkcija(klaida, rezultatas) {
if (rezultatas) {
// slaptažodis galioja
}
});

Async/Await naudojimas

Galite naudoti maišą ir patvirtinti slaptažodžius naudodami async/wait, kaip nurodyta toliau.

asyncfunkcijahashPassword(plaintextPassword) {
konst maiša = laukti bcrypt.hash (plaintextPassword, 10);
// Išsaugokite maišą duomenų bazėje
}

// palyginkite slaptažodį
asyncfunkcijapalygintiSlaptažodį(plaintextPassword, hash) {
konst rezultatas = laukti bcrypt.palyginti (plaintextPassword, hash);
grąžinti rezultatas;
}

Pažadų naudojimas

„Bcrypt“ biblioteka taip pat palaiko pažadų naudojimą.

funkcijahashPassword(plaintextPassword) {
bcrypt.maiša(plaintextPassword, 10)
.the (hash => {
// Išsaugokite maišą duomenų bazėje
})
.sugauti(err => {
konsolė.log (err)
})
}

funkcijapalygintiSlaptažodį(plaintextPassword, hash) {
bcyrpt.palyginti(plaintextPassword, maišos)
.tada (rezultatas => {
grąžinti rezultatas
})
.sugauti(err => {
konsolė.log (err)
})
}

Sumaišyti ir pasūdyti – lengvas laimėjimas

Galite naudoti „bcrypt“ biblioteką slaptažodžiams „Node.js“ maišyti ir patikrinti. Slaptažodžių maišos naudojimas sumažina tikimybę, kad kibernetiniai nusikaltėliai naudos juos slaptiems duomenims ar paslaugoms pasiekti. Sumaišius slaptažodžius jie tampa dar saugesni. Be maišos, visada patvirtinkite slaptažodžio stiprumą kaip papildomą saugumo priemonę.

8 dažniausiai naudojami slaptažodžių nulaužimo gudrybės

Skaitykite toliau

DalintisTviteryjeDalintisEl. paštas

Susijusios temos

  • Programavimas
  • Saugumas
  • Programavimas
  • JavaScript
  • Saugumas
  • Algoritmai

Apie autorių

Marija Gathoni (Paskelbtas 21 straipsnis)

Mary Gathoni yra programinės įrangos kūrėja, kuri aistringai kuria techninį turinį, kuris būtų ne tik informatyvus, bet ir įtraukiantis. Kai ji nekoduoja ir nerašo, jai patinka leisti laiką su draugais ir būti lauke.

Daugiau iš Mary Gathoni

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia