Eden najboljših načinov za varno shranjevanje gesel je, da jih solite in zgostite. Soljenje in zgoščevanje pretvori navadno geslo v edinstveno vrednost, ki jo je težko obrniti. Knjižnica bcrypt vam omogoča hash in solna gesla v Node.js z zelo malo truda.

Kaj je zgoščevanje gesla?

Hashing gesla pomeni posredovanje gesla z navadnim besedilom skozi algoritem zgoščevanja za ustvarjanje edinstvene vrednosti. Nekateri primeri algoritmov zgoščevanja so bcrypt, scrypt in SHA. Slaba stran zgoščevanja je, da je predvidljivo.

Vsakič, ko podate enak vhod algoritmu zgoščevanja, bo ta ustvaril enak izhod. Heker z dostopom do zgoščenega gesla lahko izvede obratni inženiring šifriranja, da dobi izvirno geslo. Lahko uporabljajo tehnike, kot so napadi s surovo silo ali mavrične mize. Tu pride na vrsto soljenje.

Kaj je soljenje gesla?

Soljenje gesla geslu doda naključni niz (sol), preden ga zgosti. Tako bo ustvarjeni hash vedno vsakič drugačen. Tudi če heker pridobi zgoščeno geslo, je nepraktično, da odkrije izvirno geslo, ki ga je ustvarilo.

instagram viewer

Kako uporabljati bcrypt za zgoščevanje in preverjanje gesla

bcrypt je npm modul, ki poenostavlja soljenje in zgoščevanje gesel.

1. korak: Namestite bcrypt

Uporaba npm:

npm namestite bcrypt

Uporaba preje:

preja dodaj bcrypt

2. korak: Uvozite bcrypt

konst bcrypt = zahtevajo("bcrypt")

korak: Ustvarite sol

Za pridobivanje soli pokličite bcrypt.genSalt() metoda. Ta metoda sprejme celo število, ki je stroškovni faktor, ki določa čas, potreben za zgoščevanje gesla. Višji kot je stroškovni faktor, več časa potrebuje algoritem in težje je obrniti zgoščevanje z uporabo surove sile. Dobra vrednost mora biti dovolj visoka, da zaščiti geslo, a tudi dovolj nizka, da ne upočasni postopka. Običajno se giblje med 5 in 15. V tej vadnici bomo uporabili 10.

bcrypt.genSalt (10, (napaka, sol) => {
// uporabasoldohashgeslo
})

4. korak: zgostite geslo

Pošljite preprosto geslo in ustvarjeno sol v hash() metoda:

bcrypt.genSalt (10, (napaka, sol) => {
bcrypt.hash (plaintextGeslo, sol, funkcijo(hehe, hash) {
// Shrani hash v bazo podatkov
});
})

Ko ustvarite hash, ga shranite v bazo podatkov. Uporabili ga boste za preverjanje gesla in preverjanje pristnosti uporabnika, ki se poskuša prijaviti.

Namesto da ločeno generirate sol in zgoščevanje, lahko tudi samodejno generirate sol in hash z eno samo funkcijo.

bcrypt.hash (plaintextPassword, 10, funkcijo(hehe, hash) {
// shraniti hash v bazo podatkov
});

5. korak: Primerjajte gesla z uporabo bcrypt

Za avtentikacijo uporabnikov, boste morali primerjati geslo, ki ga posredujejo, z geslom v bazi podatkov. bcrypt.compare() sprejema geslo za golo besedilo in hash, ki ste ga shranili, skupaj s funkcijo povratnega klica. Ta povratni klic zagotovi objekt, ki vsebuje morebitne napake, ki so se pojavile, in skupni rezultat primerjave. Če se geslo ujema s hashom, je rezultat resničen.

bcrypt.compare (plaintextPassword, hash, funkcijo(napaka, rezultat) {
če (rezultat) {
// geslo je veljavno
}
});

Uporaba Async/Await

Gesla lahko zgostite in preverite z async/await, kot sledi.

asyncfunkcijohashPassword(golo besediloGeslo) {
konst hash = čakati bcrypt.hash (plaintextPassword, 10);
// Shrani hash v bazo podatkov
}

// primerjaj geslo
asyncfunkcijoprimerjajGeslo(golo besediloGeslo, hash) {
konst rezultat = čakati bcrypt.compare (plaintextPassword, hash);
vrnitev rezultat;
}

Uporaba Promises

Knjižnica bcrypt podpira tudi uporabo obljub.

funkcijohashPassword(golo besediloGeslo) {
bcrypt.hash(golo besediloGeslo, 10)
.potem (hash => {
// Shrani hash v bazo podatkov
})
.ujeti(napaka => {
konzolo.log (napaka)
})
}

funkcijoprimerjajGeslo(golo besediloGeslo, hash) {
bcyrpt.primerjaj(golo besediloGeslo, hash)
.potem (rezultat => {
vrnitev rezultat
})
.ujeti(napaka => {
konzolo.log (napaka)
})
}

Hashing in soljenje je lahka zmaga

Knjižnico bcrypt lahko uporabite za zgoščevanje in preverjanje gesel v Node.js. Zgoščenje gesel zmanjšuje možnosti, da jih kibernetski kriminalci uporabijo za dostop do občutljivih podatkov ali storitev. Če posolite zgoščena gesla, so še bolj varna. Poleg zgoščevanja vedno preverite moč gesla kot dodaten varnostni ukrep.

8 najpogostejših trikov, ki se uporabljajo za vdiranje gesel

Preberite Naprej

DelitiTweetDelitiE-naslov

Povezane teme

  • Programiranje
  • Varnost
  • Programiranje
  • JavaScript
  • Varnost
  • algoritmi

O avtorju

Marija Gathoni (21 objavljenih člankov)

Mary Gathoni je razvijalka programske opreme s strastjo do ustvarjanja tehničnih vsebin, ki niso le informativne, ampak tudi privlačne. Ko ne kodira ali piše, uživa v druženju s prijatelji in na prostem.

Več od Mary Gathoni

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite