Jedním z nejlepších způsobů, jak bezpečně ukládat hesla, je osolovat a hashovat je. Salting a hash převádí prosté heslo na jedinečnou hodnotu, kterou je obtížné vrátit zpět. Knihovna bcrypt vám umožňuje hash a salt hesel v Node.js s velmi malým úsilím.

Co je hashování hesel?

Hašování hesel znamená předání hesla ve formátu prostého textu pomocí hashovacího algoritmu za účelem vygenerování jedinečné hodnoty. Některé příklady hashovacích algoritmů jsou bcrypt, scrypt a SHA. Nevýhodou hašování je, že je předvídatelné.

Pokaždé, když předáte stejný vstup do hashovacího algoritmu, vygeneruje stejný výstup. Hacker s přístupem k hašovanému heslu může provést zpětnou analýzu šifrování a získat původní heslo. Mohou používat techniky jako např útoky hrubou silou nebo duhové stoly. Zde přichází na řadu solení.

Co je solení hesel?

Solení hesla přidá náhodný řetězec (sůl) k heslu před jeho hashováním. Tímto způsobem bude vygenerovaný hash pokaždé jiný. I když hacker získá hashované heslo, je pro něj nepraktické zjistit původní heslo, které jej vygenerovalo.

instagram viewer

Jak používat bcrypt k hašování a ověření hesla

bcrypt je modul npm, který zjednodušuje solení a hašování hesel.

Krok 1: Nainstalujte bcrypt

Použití npm:

npm Nainstalujte bcrypt

Použití příze:

příze přidat bcrypt

Krok 2: Importujte bcrypt

konst bcrypt = vyžadovat("bcrypt")

Krok 3: Vytvořte sůl

Chcete-li vytvořit sůl, zavolejte bcrypt.genSalt() metoda. Tato metoda přijímá celočíselnou hodnotu, což je nákladový faktor, který určuje čas potřebný k hašování hesla. Čím vyšší je nákladový faktor, tím více času algoritmus zabere a tím obtížnější je zvrátit hash pomocí hrubé síly. Dobrá hodnota by měla být dostatečně vysoká, aby zabezpečila heslo, ale také dostatečně nízká, aby proces nezpomalovala. Obvykle se pohybuje mezi 5 a 15. V tomto tutoriálu použijeme 10.

bcrypt.genSalt (10, (chyba, sůl) => {
// použitísůlnahashHeslo
})

Krok 4: Hashujte heslo

Předejte prosté heslo a vygenerovanou sůl hash() metoda:

bcrypt.genSalt (10, (chyba, sůl) => {
bcrypt.hash (prostý textHeslo, sůl, funkce(chyba, hash) {
// Uložení hash do databáze
});
})

Jakmile hash vygenerujete, uložte jej do databáze. Budete jej používat k ověření hesla a ověření uživatele, který se pokouší přihlásit.

Místo samostatného generování soli a hashe můžete sůl a hash generovat také automaticky pomocí jediné funkce.

bcrypt.hash (heslo v prostém textu, 10, funkce(chyba, hash) {
// uložit hash do databáze
});

Krok 5: Porovnejte hesla pomocí bcrypt

Na ověřovat uživatele, budete muset porovnat heslo, které poskytují, s heslem v databázi. bcrypt.compare() přijímá heslo ve formátu prostého textu a hash, který jste uložili, spolu s funkcí zpětného volání. Toto zpětné volání poskytuje objekt obsahující všechny chyby, ke kterým došlo, a celkový výsledek porovnání. Pokud heslo odpovídá hash, výsledek je pravdivý.

bcrypt.compare (prostý textHeslo, hash, funkce(ehm, výsledek) {
if (výsledek) {
// heslo je platné
}
});

Pomocí Async/Await

Hesla můžete hashovat a ověřovat pomocí async/await následovně.

asynchronnífunkcehashPassword(prostý textHeslo) {
konst hash = čekat bcrypt.hash (heslo v prostém textu, 10);
// Uložení hash do databáze
}

// porovnání hesla
asynchronnífunkceporovnat heslo(prostý textHeslo, hash) {
konst výsledek = čekat bcrypt.compare (prostý textHeslo, hash);
vrátit se výsledek;
}

Použití Promises

Knihovna bcrypt také podporuje použití slibů.

funkcehashPassword(prostý textHeslo) {
bcrypt.hash(prostý textHeslo, 10)
.pak (hash => {
// Uložení hash do databáze
})
.chytit(chyba => {
řídicí panel.log (chyba)
})
}

funkceporovnat heslo(prostý textHeslo, hash) {
bcyrpt.srovnej(prostý textHeslo, hash)
.pak (výsledek => {
vrátit se výsledek
})
.chytit(chyba => {
řídicí panel.log (chyba)
})
}

Hašování a solení je snadná výhra

Knihovnu bcrypt můžete použít k hašování a ověřování hesel v Node.js. Hašování hesel minimalizuje šance, že je kyberzločinci použijí k přístupu k citlivým datům nebo službám. Zasolení zahašovaných hesel je činí ještě bezpečnějšími. Kromě hashování vždy ověřte sílu hesla jako další bezpečnostní opatření.

8 nejčastějších triků používaných k hacknutí hesel

Přečtěte si další

PodíltweetPodílE-mailem

Související témata

  • Programování
  • Bezpečnostní
  • Programování
  • JavaScript
  • Bezpečnostní
  • Algoritmy

O autorovi

Mary Gathoni (21 zveřejněných článků)

Mary Gathoni je vývojář softwaru s vášní pro vytváření technického obsahu, který je nejen informativní, ale také poutavý. Když zrovna nekóduje nebo nepíše, ráda se poflakuje s přáteli a je venku.

Více od Mary Gathoni

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem