Jedným z najlepších spôsobov, ako bezpečne ukladať heslá, je ich osoliť a hashovať. Solenie a hashovanie konvertuje obyčajné heslo na jedinečnú hodnotu, ktorú je ťažké vrátiť späť. Knižnica bcrypt vám umožňuje hashovať a osoliť heslá v Node.js s veľmi malým úsilím.

Čo je hashovanie hesiel?

Hašovanie hesla znamená odovzdanie hesla vo formáte obyčajného textu cez hašovací algoritmus na vygenerovanie jedinečnej hodnoty. Niektoré príklady hashovacích algoritmov sú bcrypt, scrypt a SHA. Nevýhodou hashovania je, že je predvídateľné.

Zakaždým, keď odovzdáte rovnaký vstup do hašovacieho algoritmu, vygeneruje rovnaký výstup. Hacker s prístupom k hashovanému heslu môže spätne analyzovať šifrovanie, aby získal pôvodné heslo. Môžu využívať techniky ako napr útoky hrubou silou alebo dúhové stoly. Tu prichádza na rad solenie.

Čo je solenie hesiel?

Solenie hesla pridá náhodný reťazec (soľ) do hesla pred jeho hashovaním. Takto bude vygenerovaný hash zakaždým iný. Aj keď hacker získa hashované heslo, je pre neho nepraktické zistiť pôvodné heslo, ktoré ho vygenerovalo.

instagram viewer

Ako používať bcrypt na hashovanie a overovanie hesla

bcrypt je modul npm, ktorý zjednodušuje solenie a hashovanie hesiel.

Krok 1: Nainštalujte bcrypt

Použitie npm:

npm Inštalácia bcrypt

Použitie priadze:

priadza pridať bcrypt

Krok 2: Importujte bcrypt

konšt bcrypt = vyžadovať("bcrypt")

Krok 3: Vytvorte soľ

Ak chcete vytvoriť soľ, zavolajte na bcrypt.genSalt() metóda. Táto metóda akceptuje celočíselnú hodnotu, ktorá je nákladovým faktorom, ktorý určuje čas potrebný na hashovanie hesla. Čím vyšší je nákladový faktor, tým viac času algoritmus zaberie a tým ťažšie je zvrátiť hash použitím hrubej sily. Dobrá hodnota by mala byť dostatočne vysoká na zabezpečenie hesla, ale aj dostatočne nízka, aby nespomalila proces. Bežne sa pohybuje medzi 5 a 15. V tomto návode použijeme 10.

bcrypt.genSalt (10, (chyba, soľ) => {
// použitiesoľdohashheslo
})

Krok 4: Hašujte heslo

Odovzdajte obyčajné heslo a vygenerovanú soľ hash() metóda:

bcrypt.genSalt (10, (chyba, soľ) => {
bcrypt.hash (prostý textHeslo, soľ, funkciu(chyba, hash) {
// Uloženie hash do databázy
});
})

Po vygenerovaní hash ho uložte do databázy. Budete ho používať na overenie hesla a autentifikáciu používateľa, ktorý sa pokúša prihlásiť.

Namiesto samostatného generovania soli a hashu môžete soľ a hash generovať aj automaticky pomocou jedinej funkcie.

bcrypt.hash (heslo v obyčajnom texte, 10, funkciu(chyba, hash) {
// uložiť hash do databázy
});

Krok 5: Porovnanie hesiel pomocou bcrypt

Komu autentifikovať používateľov, budete musieť porovnať heslo, ktoré poskytujú, s heslom v databáze. bcrypt.compare() akceptuje heslo vo formáte obyčajného textu a hash, ktorý ste uložili, spolu s funkciou spätného volania. Toto spätné volanie poskytuje objekt obsahujúci všetky chyby, ktoré sa vyskytli, a celkový výsledok porovnania. Ak sa heslo zhoduje s hashom, výsledok je pravdivý.

bcrypt.compare (prostý textHeslo, hash, funkciu(chyba, vysledok) {
if (výsledok) {
// heslo je platné
}
});

Pomocou Async/Await

Heslá môžete hashovať a overovať pomocou funkcie async/wait nasledovne.

asyncfunkciuhashPassword(holý textHeslo) {
konšt hash = čakať bcrypt.hash (heslo v obyčajnom texte, 10);
// Uloženie hash do databázy
}

// porovnanie hesla
asyncfunkciuporovnaniePassword(obyčajný textHeslo, hash) {
konšt výsledok = čakať bcrypt.compare (prostý textHeslo, hash);
vrátiť výsledok;
}

Používanie Promises

Knižnica bcrypt podporuje aj používanie sľubov.

funkciuhashPassword(holý textHeslo) {
bcrypt.hash(holý textHeslo, 10)
.potom (hash => {
// Uloženie hash do databázy
})
.chytiť(chyba => {
konzoly.log (chyba)
})
}

funkciuporovnaniePassword(obyčajný textHeslo, hash) {
bcyrpt.porovnaj(holý textHeslo, hash)
.potom (výsledok => {
vrátiť výsledok
})
.chytiť(chyba => {
konzoly.log (chyba)
})
}

Hašovanie a solenie je jednoduchá výhra

Knižnicu bcrypt môžete použiť na hashovanie a overovanie hesiel v Node.js. Hašovanie hesiel minimalizuje šance, že ich kyberzločinci použijú na prístup k citlivým údajom alebo službám. Zasolením zahašovaných hesiel sú ešte bezpečnejšie. Okrem hashovania vždy overte silu hesla ako dodatočné bezpečnostné opatrenie.

8 najbežnejších trikov používaných na hackovanie hesiel

Prečítajte si ďalej

zdieľamTweetujtezdieľamEmail

Súvisiace témy

  • Programovanie
  • Bezpečnosť
  • Programovanie
  • JavaScript
  • Bezpečnosť
  • Algoritmy

O autorovi

Mary Gathoni (21 publikovaných článkov)

Mary Gathoni je softvérová vývojárka s vášňou pre vytváranie technického obsahu, ktorý je nielen informatívny, ale aj pútavý. Keď nekóduje alebo nepíše, rada sa stretáva s priateľmi a je vonku.

Viac od Mary Gathoni

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber