Med potrjevanjem uporabnika ali česa podobnega nikoli ne smete imeti gesla v navadnem besedilu.
Ker veliko posameznikov uporablja isto geslo, če napadalec odkrije zbirko podatkov nešifriranih gesel, jih je mogoče zlahka uporabiti v povezavi z ujemajočimi se e-poštnimi naslovi za vstop na povezano spletno mesto ali račun in celo uporabiti za poskus dostopa do drugih računov.
Gesla so danes pogosto zgoščena, ko je na voljo geslo. Priporočljivo je, da zgostite s soljo in sol hranite skupaj z zgoščenim geslom.
Soljenje se morda zdi kot eden od korakov v receptu za zgoščevanje, vendar se v kriptografiji nanaša na dodajanje naključnih podatkov vhodu funkcije zgoščevanja, da se zagotovi, da bo zgoščevanje vedno zagotovilo edinstven rezultat, tudi če so vhodi enaki.
Posledično nas lahko značilen zgoščevalnik, ustvarjen z dodajanjem soli, brani pred številnimi metodami napadov, vključno z napadi na zgoščevalno tabelo, hkrati pa zaduši poskuse slovarja in brutalne uporabe brez povezave.
Tukaj bomo s pomočjo izrezkov kode prikazali, kako uporabiti 'bcrypt' za zaščito vaših gesel.
Torej, kaj je 'bcrypt'?
Bcrypt je knjižnica zgoščevanja, ki podpira več jezikov in zagotavlja posebno šifriranje gesel. Za večjo varnost vašega gesla samodejno proizvede dodatne naključne znake (sol) pri šifriranju vašega niza.
Izberete lahko tudi, da določite, koliko dodatnih znakov želite dodati dohodnemu nizu.
Knjižnica bcrypt bere samo bajtno kodo, ne neobdelanih nizov. Zato morate pred pošiljanjem dohodnega niza gesla v bcrypt za šifriranje le-tega najprej kodirati.
Šifriranje in kodiranje nista isti stvari. Samo zagotovi, da je niz strojno berljiv, preden ga prekrije tehnika šifriranja.
Uporaba bcrypt za šifriranje gesla v Pythonu
Python omogoča preprosto šifriranje gesel bcrypt. Osredotočili se bomo na to, da to storimo brez pomoči ogrodja. Vendar ne skrbite, če razumete, kako shraniti uporabniške vnose in jih prebrati iz baze podatkov, je postopek v ogrodjih enak.
namestitev
Nastaviti morate samo virtualno okolje Python in nato uporabiti IDE, kot je PyCharm. Nato morate najprej namestiti knjižnico:
Šifriranje gesla
Poglejmo, kako uporabiti bcrypt za šifriranje besedila po namestitvi:
Zgoraj omenjena koda Python izvede in izpiše šifriran bajtni niz. Toda vsakič, ko zaženete skript, je rezultat drugačen. Bcrypt uporablja to metodo, da zagotovi, da ima vsak uporabnik geslo, ki je posebej šifrirano.
Mimogrede, to je za šifriranje gesel.
Primerjava in potrditev gesel z uporabo Bcrypt
Kaj se zgodi, če želite shraniti zgoščeno geslo in pozneje preveriti, ali se ujema z geslom, ki ga je uporabnik predložil za preverjanje pristnosti?
To je preprosto. Samo geslo za preverjanje pristnosti je treba primerjati z vnosom baze podatkov (ali v tem primeru v pomnilniku).
Geslo za preverjanje pristnosti mora biti prav tako kodirano, preden ga primerjamo s tistim v bazi podatkov, ker lahko bcrypt bere le bajtne nize. V bistvu boste primerjali kodiran vnos za preverjanje pristnosti s kodiranim zgoščenim geslom, ki ga trenutno imate v svoji bazi podatkov.
Preizkusimo to z uporabo izmišljenih vnosov Python:
Ko zaženete prej omenjeno kodo, boste pozvani k vnosu novega gesla. Python to shrani v pomnilnik. V razdelku za preverjanje pristnosti boste nato vnesli isto geslo, ki je zasebno za vas.
Če primerjate geslo in tisto, ki je bilo predhodno šifrirano in je shranilo ujemanje, Python odda sporočilo o uspehu.
Če ni, se sporočilo o napaki natisne in nato se doda stavek else.
Osnovna zamisel je enaka kot pri registraciji in nato posredovanju gesla bazi podatkov za preverjanje pristnosti.
zaključek
Čeprav smo preprosto uporabili šifrirana gesla, da pokažemo, kako bcrypt deluje v navadnem kratkem pomnilniku Python, je njegova dejanska uporabnost v uporabniških aplikacijah.
Kljub temu ta članek prikazuje bistvene metode za organiziranje vaše kode, da to dosežete, tudi v resničnih okoliščinah.
Na primer, če uporabljate Flask, lahko polja za registracijo in preverjanje pristnosti zagotovite prek ločenih spletnih obrazcev namesto vnosov.
Seveda boste med primerjavo gesel brali iz zbirke podatkov, ki vsebuje šifrirana gesla, ki se hranijo v resničnem svetu.
Jona Nič
Hvala za to preprosto in preprosto razlago,
To mi je zelo pomagalo pri mojem trenutnem projektu.
Mislim, da je zelo dobro, da je vzorčna koda omejena na minimum in ni preobremenjena kot toliko drugih razlag.
Lep pozdrav