Jedan od najboljih načina za sigurno pohranjivanje lozinki je da ih posolite i raspršite. Soljenje i raspršivanje pretvara običnu lozinku u jedinstvenu vrijednost koju je teško poništiti. Biblioteka bcrypt omogućuje vam hash i solne lozinke u Node.js uz vrlo malo truda.
Što je hashiranje lozinke?
Haširanje lozinke znači propuštanje lozinke običnog teksta kroz algoritam za raspršivanje radi generiranja jedinstvene vrijednosti. Neki primjeri algoritama za raspršivanje su bcrypt, scrypt i SHA. Loša strana raspršivanja je ta što je predvidljivo.
Svaki put kada proslijedite isti ulaz algoritmu za raspršivanje, on će generirati isti izlaz. Haker s pristupom raspršenoj lozinki može obrnuti inženjering enkripcije kako bi dobio izvornu lozinku. Mogu koristiti tehnike kao što su napadi grubom silom ili duginih tablica. Tu dolazi do soljenja.
Što je slanje lozinki?
Soljenje lozinkom dodaje nasumični niz (sol) u lozinku prije nego što je rasprši. Na ovaj način, generirani hash uvijek će svaki put biti drugačiji. Čak i ako haker dobije raspršenu lozinku, za njih je nepraktično otkriti izvornu lozinku koja ju je generirala.
Kako koristiti bcrypt za hashiranje i provjeru lozinke
bcrypt je npm modul koji pojednostavljuje slanje i raspršivanje lozinki.
Korak 1: Instalirajte bcrypt
Korištenje npm-a:
npm instalirati bcrypt
Korištenje pređe:
pređa dodati bcrypt
Korak 2: Uvezite bcrypt
konst bcrypt = zahtijevati("bcrypt")
Korak 3: Napravite sol
Za proizvodnju soli nazovite bcrypt.genSalt() metoda. Ova metoda prihvaća cjelobrojnu vrijednost koja je faktor troškova koji određuje vrijeme potrebno za raspršivanje lozinke. Što je veći faktor troškova, to je algoritam potrebno više vremena i teže je obrnuti hash korištenjem grube sile. Dobra vrijednost trebala bi biti dovoljno visoka da osigura lozinku, ali i dovoljno niska da ne uspori proces. Obično se kreće između 5 i 15. U ovom vodiču koristit ćemo 10.
bcrypt.genSalt (10, (err, sol) => {
// koristitisoldohashlozinka
})
Korak 4: Hash lozinku
Proslijedite običnu lozinku i generiranu sol na hash() metoda:
bcrypt.genSalt (10, (err, sol) => {
bcrypt.hash (plaintextPassword, sol, funkcija(err, hash) {
// Pohraniti hash u bazu podataka
});
})
Nakon što ste generirali hash, pohranite ga u bazu podataka. Koristit ćete ga za provjeru lozinke i autentifikaciju korisnika koji se pokušava prijaviti.
Umjesto zasebnog generiranja soli i hasha, također možete automatski generirati sol i hash pomoću jedne funkcije.
bcrypt.hash (plaintextPassword, 10, funkcija(err, hash) {
// pohraniti hash u bazu podataka
});
Korak 5: Usporedite lozinke koristeći bcrypt
Do autentifikaciju korisnika, morat ćete usporediti lozinku koju daju s onom u bazi podataka. bcrypt.compare() prihvaća zaporku običnog teksta i hash koji ste pohranili, zajedno s funkcijom povratnog poziva. Taj povratni poziv daje objekt koji sadrži sve pogreške koje su se dogodile i ukupni rezultat usporedbe. Ako se lozinka podudara s hashom, rezultat je istinit.
bcrypt.compare (plaintextPassword, hash, funkcija(greh, rezultat) {
if (rezultat) {
// lozinka je važeća
}
});
Korištenje Async/Await
Možete hashirati i provjeriti lozinke pomoću async/await na sljedeći način.
asinkfunkcijahashPassword(običan tekstLozinka) {
konst hash = čekati bcrypt.hash (plaintextPassword, 10);
// Pohraniti hash u bazu podataka
}
// usporedi lozinku
asinkfunkcijausporediLozinku(plaintextLozinka, hash) {
konst rezultat = čekati bcrypt.compare (plaintextPassword, hash);
povratak proizlaziti;
}
Korištenje obećanja
Knjižnica bcrypt također podržava korištenje obećanja.
funkcijahashPassword(običan tekstLozinka) {
bcrypt.haš(običan tekstLozinka, 10)
.onda (haš => {
// Pohraniti hash u bazu podataka
})
.ulov(err => {
konzola.log (pogreška)
})
}
funkcijausporediLozinku(plaintextLozinka, hash) {
bcyrpt.usporedi(običan tekstLozinka, hash)
.onda (rezultat => {
povratak proizlaziti
})
.ulov(err => {
konzola.log (pogreška)
})
}
Haširanje i soljenje je laka pobjeda
Možete koristiti biblioteku bcrypt za hashiranje i provjeru lozinki u Node.js. Haširanje lozinki minimizira šanse da ih kibernetički kriminalci koriste za pristup osjetljivim podacima ili uslugama. Slanje vaših raspršenih lozinki čini ih još sigurnijim. Osim raspršivanja, uvijek provjerite snagu lozinke kao dodatnu sigurnosnu mjeru.
8 najčešćih trikova koji se koriste za hakiranje lozinki
Pročitajte dalje
Povezane teme
- Programiranje
- Sigurnost
- Programiranje
- JavaScript
- Sigurnost
- Algoritmi
O autoru

Mary Gathoni je programerica softvera sa strašću za stvaranje tehničkog sadržaja koji nije samo informativan nego i privlačan. Kad ne kodira i ne piše, uživa u druženju s prijateljima i na otvorenom.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu