A jelszavak biztonságos tárolásának egyik legjobb módja a sózás és kivonatolás. A sózás és a kivonatolás az egyszerű jelszót olyan egyedi értékké alakítja, amelyet nehéz visszafordítani. A bcrypt könyvtár lehetővé teszi a Node.js-ben lévő jelszavak kivonatolását és sózását nagyon kis erőfeszítéssel.
Mi az a jelszókivonat?
Jelszó kivonatolás egy egyszerű szöveges jelszó átadását jelenti egy kivonatoló algoritmuson, hogy egyedi értéket generáljon. Néhány példa a kivonatolási algoritmusokra: bcrypt, scrypt és SHA. A kivonatolás hátránya, hogy kiszámítható.
Minden alkalommal, amikor ugyanazt a bemenetet adja át egy kivonatoló algoritmusnak, az ugyanazt a kimenetet generálja. A kivonatolt jelszóhoz hozzáféréssel rendelkező hacker visszafejtheti a titkosítást, hogy megkapja az eredeti jelszót. Olyan technikákat alkalmazhatnak, mint pl nyers erejű támadások vagy szivárványasztalok. Itt jön be a sózás.
Mi az a jelszósózás?
Jelszósózás véletlenszerű karakterláncot (a sót) ad a jelszóhoz a kivonatolás előtt. Így a generált hash mindig más és más lesz. Még ha egy hacker meg is szerzi a kivonatolt jelszót, nem célszerű megtalálnia az eredeti jelszót, amely azt generálta.
A bcrypt használata jelszó kivonatolására és ellenőrzésére
bcrypt egy npm modul, amely leegyszerűsíti a jelszó megadását és kivonatolását.
1. lépés: A bcrypt telepítése
Az npm használata:
npm telepítés bcrypt
A fonal használata:
fonal add bcrypt
2. lépés: Bcrypt importálása
const bcrypt = igényelnek("bcrypt")
3. lépés: Hozzon létre egy sót
A só előállításához hívja a bcrypt.genSalt() módszer. Ez a módszer elfogad egy egész értéket, amely az a költségtényező, amely meghatározza a jelszó kivonatolási idejét. Minél magasabb a költségtényező, annál több időt vesz igénybe az algoritmus, és annál nehezebb megfordítani a hash-t nyers erővel. A jó értéknek elég magasnak kell lennie a jelszó biztosításához, de elég alacsonynak is ahhoz, hogy ne lassítsa le a folyamatot. Általában 5 és 15 között van. Ebben az oktatóanyagban 10-et fogunk használni.
bcrypt.genSalt (10, (hiba, só) => {
// használatsónak nekhashJelszó
})
4. lépés: Kivonatolja a jelszót
Adja át az egyszerű jelszót és a generált sót a hash() módszer:
bcrypt.genSalt (10, (hiba, só) => {
bcrypt.hash (plaintextPassword, só, funkció(hiba, hash) {
// Tárolja a hash-t az adatbázisban
});
})
Miután létrehozta a hash-t, tárolja azt az adatbázisban. A jelszó ellenőrzésére és a bejelentkezni próbáló felhasználó hitelesítésére fogja használni.
A só és a hash külön generálása helyett egyetlen funkció használatával automatikusan generálhatja a sót és a hash-t.
bcrypt.hash (plaintextPassword, 10, funkció(hiba, hash) {
// hash tárolása az adatbázisban
});
5. lépés: Hasonlítsa össze a jelszavakat a bcrypt használatával
Nak nek hitelesítse a felhasználókat, össze kell hasonlítania az általuk megadott jelszót az adatbázisban lévővel. bcrypt.compare() elfogadja az egyszerű szöveges jelszót és a tárolt hash-t, valamint a visszahívási funkciót. Ez a visszahívás egy objektumot biztosít, amely tartalmazza az esetleges hibákat és az összehasonlítás összesített eredményét. Ha a jelszó megegyezik a hash-vel, az eredmény igaz.
bcrypt.compare (plaintextPassword, hash, funkció(hiba, eredmény) {
if (eredmény) {
// a jelszó érvényes
}
});
Az Async/Await használata
A jelszavakat kivonatozhatja és ellenőrizheti az async/await használatával az alábbiak szerint.
asyncfunkcióhashPassword(plaintextPassword) {
const hash = várja bcrypt.hash (plaintextPassword, 10);
// Tárolja a hash-t az adatbázisban
}
// jelszavak összehasonlítása
asyncfunkcióJelszó összehasonlítása(plaintextPassword, hash) {
const eredmény = várja bcrypt.compare (plaintextPassword, hash);
Visszatérés eredmény;
}
Az ígéretek használata
A bcrypt könyvtár az ígéretek használatát is támogatja.
funkcióhashPassword(plaintextPassword) {
bcrypt.hash(plaintextPassword, 10)
.then (hash => {
// Tárolja a hash-t az adatbázisban
})
.fogás(hiba => {
konzol.log (hiba)
})
}
funkcióJelszó összehasonlítása(plaintextPassword, hash) {
bcyrpt.hasonlítsa össze(plaintextPassword, hash)
.then (eredmény => {
Visszatérés eredmény
})
.fogás(hiba => {
konzol.log (hiba)
})
}
A kivonatolás és a sózás könnyű győzelem
Használhatja a bcrypt könyvtárat a Node.js jelszavak kivonatolására és ellenőrzésére. A jelszavak kivonatolása minimálisra csökkenti annak esélyét, hogy a kiberbűnözők érzékeny adatokhoz vagy szolgáltatásokhoz használják fel őket. A kivonatolt jelszavak sózása még nagyobb biztonságot nyújt. A kivonatoláson kívül további biztonsági intézkedésként mindig ellenőrizze a jelszó erősségét.
A 8 leggyakoribb trükk a jelszavak feltörésére
Olvassa el a következőt
Kapcsolódó témák
- Programozás
- Biztonság
- Programozás
- JavaScript
- Biztonság
- Algoritmusok
A szerzőről

Mary Gathoni egy szoftverfejlesztő, aki szenvedélyesen hoz létre olyan technikai tartalmat, amely nem csak informatív, hanem vonzó is. Amikor nem kódol vagy ír, szívesen lóg a barátaival és a szabadban van.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!
Kattintson ide az előfizetéshez