Nikada ne smijete čuvati lozinku u otvorenom tekstu dok potvrđujete korisnika ili radite nešto slično.
Budući da mnogi pojedinci koriste istu zaporku, ako napadač otkrije bazu podataka nešifriranih zaporki, one se lako mogu upotrijebiti zajedno s odgovarajućim adresama e-pošte za ulazak na povezano web mjesto ili račun, pa čak i za pokušaj pristupa drugim računima.
Lozinke se danas često raspršuju kada se unese lozinka. Savjetuje se raspršiti sa soli i čuvati sol zajedno s raspršenom lozinkom.
Soljenje se može činiti kao jedan od koraka u receptu za hash browns, ali u kriptografiji se odnosi na dodavanje nasumičnih podataka u ulaz hash funkcije kako bi se osiguralo da hash uvijek daje jedinstveni rezultat čak i ako su ulazi identični.
Kao rezultat toga, karakteristični hash stvoren dodavanjem soli može nas obraniti od nekoliko metoda napada, uključujući napade na hash tablicu, dok guši rječnik i brutalne offline pokušaje.
Ovdje ćemo, uz pomoć isječaka koda, pokazati kako koristiti 'bcrypt' za zaštitu vaših lozinki.
Dakle, što je 'bcrypt'?
Bcrypt je biblioteka za raspršivanje koja podržava nekoliko jezika i pruža posebnu enkripciju lozinki. Kako bi se povećala sigurnost vaše lozinke, ona automatski proizvodi dodatne nasumične znakove (sol) prilikom šifriranja vašeg niza.
Također možete odabrati da definirate koliko dodatnih znakova želite dodati dolaznom nizu.
Knjižnica bcrypt čita samo bajt kod, a ne neobrađene nizove. Stoga, prije slanja dolaznog niza lozinki u bcrypt za enkripciju, prvo je morate kodirati.
Šifriranje i kodiranje nisu iste stvari. Samo osigurava da je string strojno čitljiv prije nego što ga prekrije tehnika šifriranja.
Korištenje bcrypt za šifriranje lozinke u Pythonu
Python čini bcrypt šifriranje lozinke jednostavnim. Usredotočit ćemo se na to da to učinimo bez pomoći okvira. Ali ne brinite, ako razumijete kako spremiti korisničke unose i pročitati ih iz baze podataka, postupak je isti u okvirima.
Montaža
Trebate samo postaviti Python virtualno okruženje i zatim upotrijebiti IDE poput PyCharma. Zatim se najprije mora instalirati biblioteka:
Lozinka za šifriranje
Pogledajmo kako koristiti bcrypt za šifriranje teksta nakon što je instaliran:
Gore spomenuti Python kod izvršava i ispisuje šifrirani niz bajtova. Ali svaki put kad pokrenete skriptu, rezultat je drugačiji. Bcrypt koristi ovu metodu kako bi osigurao da svaki korisnik ima lozinku koja je posebno šifrirana.
To je, uzgred, za enkripciju lozinke.
Usporedba i potvrda lozinki pomoću Bcrypt-a
Što se događa ako želite spremiti hashiranu zaporku i kasnije provjeriti odgovara li zaporci koju je korisnik poslao za provjeru autentičnosti?
To je jednostavno. Samo se lozinka za provjeru autentičnosti mora usporediti s unosom baze podataka (ili u memoriji u ovom slučaju).
Lozinka za provjeru autentičnosti također mora biti kodirana prije usporedbe s onom u bazi podataka jer bcrypt može čitati samo nizove bajtova. U osnovi, usporedit ćete kodirani autentifikacijski unos s kodiranom raspršenom lozinkom koju trenutno imate u svojoj bazi podataka.
Testirajmo ovo koristeći fiktivne Python unose:
Nakon pokretanja gore navedenog koda, od vas se traži nova lozinka. Python to sprema u memoriju. U odjeljku za provjeru autentičnosti unijet ćete istu lozinku koja je privatna za vas.
Ako se lozinka uspoređuje s onom koja je prethodno bila šifrirana i spremljena, Python emitira poruku o uspješnosti.
Ako nije, poruka o pogrešci se ispisuje, a zatim se dodaje rečenica else.
Osnovna ideja je identična onoj registracije i zatim unosa lozinke u bazu podataka za provjeru autentičnosti.
Zaključak
Iako smo jednostavno upotrijebili šifrirane lozinke da pokažemo kako bcrypt funkcionira u običnoj Python kratkoj memoriji, njegova stvarna primjenjivost leži u korisničkim aplikacijama.
Unatoč tome, ovaj članak pokazuje bitne metode za organiziranje vašeg koda da biste to postigli, čak i u stvarnim okolnostima.
Na primjer, ako koristite Flask, možete unijeti polja za registraciju i autentifikaciju putem zasebnih web obrazaca umjesto unosa.
Naravno, dok uspoređujete lozinke, čitat ćete iz baze podataka koja sadrži šifrirane lozinke koje se čuvaju u stvarnom svijetu.
Jona Nitsch
Hvala na ovom jednostavnom i jednostavnom objašnjenju,
To mi je puno pomoglo u mom trenutnom projektu.
Mislim da je vrlo dobro što je primjer koda ograničen na minimum i nije preopterećen kao mnoga druga objašnjenja.
Srdačan pozdrav