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.
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ší
Související témata
- Programování
- Bezpečnostní
- Programování
- JavaScript
- Bezpečnostní
- Algoritmy
O autorovi

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