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.
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
Povezane teme
- Programiranje
- Varnost
- Programiranje
- JavaScript
- Varnost
- algoritmi
O avtorju

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.
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