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álatnak 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

Ossza megCsipogOssza megEmail

Kapcsolódó témák

  • Programozás
  • Biztonság
  • Programozás
  • JavaScript
  • Biztonság
  • Algoritmusok

A szerzőről

Mária Gathoni (21 cikk megjelent)

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.

Továbbiak Mary Gathonitól

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