Una dintre cele mai bune modalități de a stoca parolele în siguranță este să le sărați și să le distrugeți. Sărarea și hashingul transformă o parolă simplă într-o valoare unică care este greu de inversat. Biblioteca bcrypt vă permite să folosiți parole hash și salt în Node.js cu foarte puțin efort.
Ce este hashingul parolei?
Hashing parole înseamnă trecerea unei parole cu text simplu printr-un algoritm de hashing pentru a genera o valoare unică. Câteva exemple de algoritmi de hashing sunt bcrypt, scrypt și SHA. Dezavantajul hashingului este că este previzibil.
De fiecare dată când treceți aceeași intrare unui algoritm de hashing, acesta va genera aceeași ieșire. Un hacker cu acces la parola hashing poate face inginerie inversă a criptării pentru a obține parola originală. Ei pot folosi tehnici precum atacuri cu forță brută sau mese curcubeu. Aici intervine sărarea.
Ce este parola de sare?
Sărarea parolei adaugă un șir aleatoriu (sarea) la o parolă înainte de ao hashing. În acest fel, hash-ul generat va fi întotdeauna diferit de fiecare dată. Chiar dacă un hacker obține parola codificată, nu este practic pentru el să descopere parola originală care a generat-o.
Cum să utilizați bcrypt pentru a hash și a verifica o parolă
bcrypt este un modul npm care simplifică sărarea parolelor și hashingul.
Pasul 1: Instalați bcrypt
Folosind npm:
npm instalare bcrypt
Folosind fire:
yarn adauga bcrypt
Pasul 2: importați bcrypt
const bcrypt = cere("bcrypt")
Pasul 3: Generați o sare
Pentru a genera sare, apelați bcrypt.genSalt() metodă. Această metodă acceptă o valoare întreagă care este factorul de cost care determină timpul necesar pentru hashing o parolă. Cu cât este mai mare factorul de cost, cu atât algoritmul durează mai mult și cu atât este mai dificil să inversezi hash-ul folosind forța brută. O valoare bună ar trebui să fie suficient de mare pentru a securiza parola, dar și suficient de mică pentru a nu încetini procesul. De obicei variază între 5 și 15. În acest tutorial, vom folosi 10.
bcrypt.genSalt (10, (err, sare) => {
// utilizaresarelahashparola
})
Pasul 4: Hash parola
Transmiteți parola simplă și sarea generată către hash() metodă:
bcrypt.genSalt (10, (err, sare) => {
bcrypt.hash (text simplu Parolă, sare, funcţie(gres, hash) {
// Stochează hash în baza de date
});
})
După ce ați generat hash-ul, stocați-l în baza de date. Îl vei folosi pentru a verifica o parolă și a autentifica un utilizator care încearcă să se autentifice.
În loc să generați sarea și hașul separat, puteți genera automat sarea și hașul folosind o singură funcție.
bcrypt.hash (plaintextPassword, 10, funcţie(gres, hash) {
// stochează hash în baza de date
});
Pasul 5: Comparați parolele folosind bcrypt
La autentificarea utilizatorilor, va trebui să comparați parola pe care o furnizează cu cea din baza de date. bcrypt.compare() acceptă parola text simplu și hash-ul pe care le-ați stocat, împreună cu o funcție de apel invers. Apelul înapoi furnizează un obiect care conține orice erori care au apărut și rezultatul general al comparației. Dacă parola se potrivește cu hash, rezultatul este adevărat.
bcrypt.compare (plaintextPassword, hash, funcţie(gres, rezultat) {
dacă (rezultat) {
// parola este validă
}
});
Folosind Async/Await
Puteți aplica hash și verifica parole folosind async/wait după cum urmează.
asincronfuncţiehashPassword(text simpluParola) {
const hash = așteaptă bcrypt.hash (plaintextPassword, 10);
// Stochează hash în baza de date
}
// compara parola
asincronfuncţiecomparăParola(text simpluParolă, hash) {
const rezultat = așteaptă bcrypt.compare (plaintextPassword, hash);
întoarcere rezultat;
}
Folosind Promisiuni
Biblioteca bcrypt acceptă și utilizarea promisiunilor.
funcţiehashPassword(text simpluParola) {
bcrypt.hash(text simpluParola, 10)
.apoi (hash => {
// Stochează hash în baza de date
})
.captură(err => {
consolă.log (eroare)
})
}
funcţiecomparăParola(text simpluParolă, hash) {
bcyrpt.comparaţie(text simpluParola, hash)
.apoi (rezultat => {
întoarcere rezultat
})
.captură(err => {
consolă.log (eroare)
})
}
Hacelarea și sărarea este un câștig ușor
Puteți folosi biblioteca bcrypt pentru a hash și a verifica parolele în Node.js. Hashing parolele minimizează șansele ca infractorii cibernetici să le folosească pentru a accesa date sau servicii sensibile. Sărați parolele dvs. hashing le face și mai sigure. În afară de hashing, validați întotdeauna puterea parolei ca măsură suplimentară de securitate.
Cele mai frecvente 8 trucuri folosite pentru a pirata parolele
Citiți în continuare
Subiecte asemănătoare
- Programare
- Securitate
- Programare
- JavaScript
- Securitate
- Algoritmi
Despre autor
Mary Gathoni este un dezvoltator de software cu o pasiune pentru crearea de conținut tehnic care nu este doar informativ, ci și antrenant. Când nu codifică sau nu scrie, îi place să iasă cu prietenii și să fie în aer liber.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona