Yksi parhaista tavoista säilyttää salasanat turvallisesti on suolata ja hajauttaa ne. Suolaus ja hajautus muuntaa tavallisen salasanan ainutlaatuiseksi arvoksi, jota on vaikea muuttaa. Bcrypt-kirjaston avulla voit tiivistää ja suolata salasanoja Node.js: ssä hyvin pienellä vaivalla.
Mikä on salasanan hajautus?
Salasanan hajautus tarkoittaa pelkän tekstin salasanan välittämistä hajautusalgoritmin kautta ainutlaatuisen arvon luomiseksi. Joitakin esimerkkejä hajautusalgoritmeista ovat bcrypt, scrypt ja SHA. Hajautustekniikan haittapuoli on, että se on ennakoitavissa.
Joka kerta kun välität saman syötteen hajautusalgoritmille, se tuottaa saman tulosteen. Hakkeri, jolla on pääsy hajautussalasanaan, voi kääntää salauksen saadakseen alkuperäisen salasanan. He voivat käyttää tekniikoita, kuten raa'an voiman hyökkäyksiä tai sateenkaaripöytiä. Tässä tulee suolaus mukaan.
Mitä on salasanasuolaus?
Salasanan suolaus lisää satunnaisen merkkijonon (suolan) salasanaan ennen sen tiivistämistä. Tällä tavalla luotu hash on aina erilainen joka kerta. Vaikka hakkeri hankkisi tiivistetyn salasanan, on epäkäytännöllistä, että hän löytää sen luoneen alkuperäisen salasanan.
Kuinka käyttää bcryptiä salasanan hajauttamiseen ja vahvistamiseen
bcrypt on npm-moduuli, joka yksinkertaistaa salasanan suolaamista ja hajauttamista.
Vaihe 1: Asenna bcrypt
npm: n käyttö:
npm Asentaa bcrypt
Langan käyttö:
lanka lisää bcrypt
Vaihe 2: Tuo bcrypt
konst bcrypt = vaatia("bcrypt")
Vaihe 3: Luo suola
Luo suola soittamalla bcrypt.genSalt() menetelmä. Tämä menetelmä hyväksyy kokonaisluvun arvon, joka on kustannustekijä, joka määrittää salasanan hajautusajan. Mitä korkeampi kustannustekijä, sitä kauemmin algoritmi vie aikaa ja sitä vaikeampaa on kääntää hajautus raa'alla voimalla. Hyvän arvon tulee olla riittävän korkea salasanan suojaamiseksi, mutta myös riittävän pieni, jotta se ei hidasta prosessia. Se on yleensä 5 ja 15 välillä. Tässä opetusohjelmassa käytämme 10.
bcrypt.genSalt (10, (err, suola) => {
// käyttääsuolakohtaanhashSalasana
})
Vaihe 4: Hash salasana
Välitä tavallinen salasana ja luotu suola hash() menetelmä:
bcrypt.genSalt (10, (err, suola) => {
bcrypt.hash (plaintextPassword, suola, toiminto(virhe, hash) {
// Tallenna hash tietokantaan
});
})
Kun olet luonut tiivisteen, tallenna se tietokantaan. Käytät sitä salasanan vahvistamiseen ja sisäänkirjautumista yrittävän käyttäjän todentamiseen.
Sen sijaan, että luot suolan ja tiivisteen erikseen, voit myös luoda suolan ja tiivisteen automaattisesti yhdellä toiminnolla.
bcrypt.hash (plaintextPassword, 10, toiminto(virhe, hash) {
// tallenna tiiviste tietokantaan
});
Vaihe 5: Vertaa salasanoja bcryptillä
Vastaanottaja todentaa käyttäjät, sinun on verrattava heidän antamaansa salasanaa tietokannassa olevaan salasanaan. bcrypt.compare() hyväksyy pelkän tekstin salasanan ja tallentamasi hajautusarvon sekä takaisinsoittotoiminnon. Tämä takaisinsoitto tarjoaa objektin, joka sisältää kaikki tapahtuneet virheet, ja vertailun kokonaistuloksen. Jos salasana vastaa tiivistettä, tulos on tosi.
bcrypt.compare (plaintextPassword, hash, toiminto(virhe, tulos) {
if (tulos) {
// salasana on kelvollinen
}
});
Async/Await käyttö
Voit tiivistää ja vahvistaa salasanat käyttämällä async/await-toimintoa seuraavasti.
asynktoimintohashPassword(plaintextPassword) {
konst hash = odottaa bcrypt.hash (plaintextPassword, 10);
// Tallenna hash tietokantaan
}
// vertaa salasanaa
asynktoimintovertaa salasanaa(plaintextPassword, hash) {
konst tulos = odottaa bcrypt.compare (plaintextPassword, hash);
palata tulos;
}
Lupausten käyttäminen
Bcrypt-kirjasto tukee myös lupausten käyttöä.
toimintohashPassword(plaintextPassword) {
bcrypt.hash(plaintextPassword, 10)
.hen (hash => {
// Tallenna hash tietokantaan
})
.ottaa kiinni(err => {
konsoli.log (err)
})
}
toimintovertaa salasanaa(plaintextPassword, hash) {
bcyrpt.vertailla(plaintextPassword, hash)
.then (tulos => {
palata tulos
})
.ottaa kiinni(err => {
konsoli.log (err)
})
}
Hashing ja suolaus on helppo voitto
Voit käyttää bcrypt-kirjastoa salasanojen hajauttamiseen ja vahvistamiseen Node.js: ssä. Salasanojen hajautus minimoi mahdollisuudet, että verkkorikolliset käyttävät niitä päästäkseen käsiksi arkaluontoisiin tietoihin tai palveluihin. Hajautettujen salasanojen suolaaminen tekee niistä entistä turvallisempia. Vahvistamisen lisäksi varmista aina salasanan vahvuus lisäturvatoimena.
8 yleisintä salasanojen murtamiseen käytettyä temppua
Lue Seuraava
Liittyvät aiheet
- Ohjelmointi
- Turvallisuus
- Ohjelmointi
- JavaScript
- Turvallisuus
- Algoritmit
Kirjailijasta

Mary Gathoni on ohjelmistokehittäjä, jonka intohimona on luoda teknistä sisältöä, joka ei ole vain informatiivinen, vaan myös mukaansatempaava. Kun hän ei koodaa tai kirjoita, hän nauttii ystävien kanssa olemisesta ja ulkoilusta.
tilaa uutiskirjeemme
Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja eksklusiivisia tarjouksia!
Klikkaa tästä tilataksesi