Nikada ne smijete zadržati lozinku u otvorenom tekstu dok potvrđujete korisnika ili radite nešto slično.
Budući da mnogi pojedinci koriste istu lozinku, ako napadač otkrije bazu podataka nešifriranih lozinki, oni se lako mogu koristiti u kombinaciji s odgovarajućim e-mailovima za ulazak na povezanu web stranicu ili račun, pa čak i za pokušaj pristupa drugim nalozima.
Lozinke se danas često heširaju kada se unese lozinka. Savjetuje se da se rasprši sa solju i zadrži sol zajedno sa heširanom lozinkom.
Soljenje može izgledati kao jedan od koraka u receptu za hash browns, ali u kriptografiji, ono se odnosi na dodavanje nasumičnih podataka na ulaz heš funkcije kako bi se osiguralo da će hash uvijek dati jedinstven rezultat čak i ako su ulazi identični.
Kao rezultat toga, prepoznatljiv hash stvoren dodavanjem soli može nas odbraniti od nekoliko metoda napada, uključujući napade na tablice heširanja, dok guši pokušaje vanmrežnog korištenja rječnika i grube sile.
Ovdje ćemo, uz pomoć isječaka koda, pokazati kako koristiti 'bcrypt' za osiguranje vaših lozinki.
Dakle, šta je 'bcrypt'?
Bcrypt je heš biblioteka koja podržava nekoliko jezika i pruža posebnu šifru lozinke. Kako bi povećao sigurnost vaše lozinke, 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.
Biblioteka bcrypt čita samo bajt kod, ne i sirove nizove. Stoga, prije nego što pošaljete dolazni niz lozinke u bcrypt za šifriranje, prvo ga morate kodirati.
Šifriranje i kodiranje nisu iste stvari. On samo osigurava da je string strojno čitljiv prije nego što ga pokrije tehnika šifriranja.
Korištenje bcrypt za šifriranje lozinke u Pythonu
Python čini bcrypt šifriranje lozinkom jednostavnim. Koncentrisaćemo se na to da ovo uradimo bez pomoći okvira. Ali ne brinite, ako znate kako da sačuvate korisničke unose i pročitate ih iz baze podataka, procedura je ista u okviru.
instalacija
Potrebno je samo da podesite Python virtuelno okruženje, a zatim da koristite IDE kao što je PyCharm. Biblioteka se tada mora prvo instalirati:
Šifrovanje lozinke
Pogledajmo kako koristiti bcrypt za šifriranje teksta nakon što je instaliran:
Gore spomenuti Python kod izvršava i izlazi šifrirani niz bajtova. Ali svaki put kada 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 šifriranje lozinke.
Poređenje i potvrda lozinki pomoću Bcrypt
Šta se dešava ako želite da sačuvate heširanu lozinku i kasnije proverite da li se podudara sa lozinkom koju je korisnik poslao za autentifikaciju?
To je jednostavno. Samo lozinka za provjeru autentičnosti mora se uporediti sa unosom baze podataka (ili u memoriji u ovom slučaju).
Lozinka za autentifikaciju također mora biti kodirana prije nego što se uporedi s onom u bazi podataka jer bcrypt može čitati samo nizove bajtova. U osnovi, uporedićete kodirani ulaz za autentifikaciju sa kodiranom heširanom lozinkom koju trenutno imate u svojoj bazi podataka.
Testirajmo ovo koristeći fiktivne Python ulaze:
Nakon pokretanja gore navedenog koda, od vas se traži nova lozinka. Python to sprema u memoriju. U odjeljku za provjeru autentičnosti tada ćete unijeti istu lozinku, koja je privatna za vas.
Ako se lozinka uporedi sa onom koja je prethodno šifrovana i sačuvana podudaranje, Python emituje poruku o uspehu.
Ako nije, ispisuje se poruka o grešci, a zatim se dodaje rečenica else.
Osnovna ideja je identična onoj o registraciji, a zatim davanju lozinke bazi podataka radi provjere autentičnosti.
zaključak
Čak iako smo jednostavno koristili šifrirane lozinke da pokažemo kako bcrypt funkcionira u običnoj Python kratkoj memoriji, njegova stvarna primjenjivost leži u korisničkim aplikacijama.
Ipak, ovaj članak pokazuje osnovne metode za organiziranje vašeg koda kako bi se to postiglo, čak iu stvarnim okolnostima.
Na primjer, ako koristite Flask, možete dati polja za registraciju i autentifikaciju putem zasebnih web obrazaca umjesto unosa.
Naravno, dok upoređujete lozinke, čitat ćete iz baze podataka koja sadrži šifrirane lozinke koje se čuvaju u stvarnom svijetu.
Jona Nitsch
Hvala vam na ovom jednostavnom i jednostavnom objašnjenju,
Ovo mi je puno pomoglo u mom trenutnom projektu.
Mislim da je jako dobro što je primjer koda ograničen na minimum i nije preopterećen kao mnoga druga objašnjenja.
srdačan pozdrav