Kako shraniti in preveriti geslo?

  • Pravi način za shranjevanje
  • Zakaj hash?
  • Zakaj uporabljati sol?
  • Zakaj dodati prijavo?
  • Preverjanje

Če razvijete aplikacijo, ki upravlja gesla, je to pomembno zaradi nevarnosti piratstva sistema in ogrožanja uporabnikov podatkov.

Obstaja dobra praksa za shranjevanje gesla.

Pravi način za shranjevanje

Shrani prijavo in hash (login + geslo + sol)

Psevdo-koda: passwordHash = MD5MD5 (prijava + "zo5pro $ 1pvkhj6 * cz4a8ùtvb # ui4oeuio" + geslo)

Prijava za shranjevanje in geslo. Gesla ne shranjujte.

Zakaj hash?

Nikoli ne smemo shranjevati gesla v jasnem besedilu.

  • Tveganje: Če nekdo vdre v vašo bazo gesel, jih lahko naloži in uporabi neposredno.
  • Zaščita: Razpršitev, ki se uporablja za izračun prstnega odtisa gesla. Ker algoritem ni reverzibilen, ne more takoj najti gesla.
  • Zato uporabljamo kriptografsko razpršitev. Običajno MD5, SHA-1 ali drugo (SHA-256, SHA-512 ...)
  • Nikoli ne uporabljajte CRC ali CRC32 .

Zakaj uporabljati sol?

Mavrične tabele so velike tabele, ki vsebujejo preračunane hash (MD5 in druge).

To vam omogoča hitro iskanje gesla, ki je dalo določeno razpršitev.

Tveganje : Če uporabljate MD5 (geslo), lahko mavrične mize obnovijo geslo v MD5 v nekaj minutah, celo sekundah.

Zaščita : s soljo so mavrične mize popolnoma nepotrebne.

Sol je poljubna vrednost, dolžina po vaši izbiri. Nastavite jo kot konstanto v vaši aplikaciji.

Zakaj dodati prijavo?

Če shranite MD5 (sol + geslo) ali MD5 (geslo), to pomeni, da imata dva uporabnika z istim geslom isto razpršitev.

  • Tveganje: uporabnike lahko enostavno identificirate z istim geslom. Če je uporabnik ogrožen, omogoča takojšen dostop do drugih uporabnikov (ki imajo lahko večje pravice).
  • Zaščita: Z dodajanjem prijave pred hasherjem bo rezultat MD5 za vsakega uporabnika različen, tudi če imajo isto geslo.

Preverjanje

Ko prejmete prijavo in geslo, preprosto ponovite isti izračun:

  • Poglej v svojo bazo, za hash za to prijavo
  • Primerjajte vrednost razpršitve (prijava + sol + geslo)
  • Če sta obe hashe identični, je vneseno geslo pravilno.

Hvala za sebsauvage za ta namig.

Prejšnji Članek Naslednji Članek

Top Nasveti