Php parola hashing

Această secțiune explică motivele din spatele hashing parole în scopuri de securitate, precum și metode eficiente pentru hashing.

De ce ar trebui să hash parolele în cererea mea?

Prin utilizarea algoritm hash la parolele de utilizator înainte de a le stoca în baza de date, a face imposibilă rezolvarea parola original pentru atacator baza de date, menținând în același timp posibilitatea de a compara hash rezultată la parola originală.

Este important de remarcat, totuși, că hashing parolele le protejează numai de a compromite în magazinul dvs., dar nu neapărat de interferența de cod malițios în aplicația dumneavoastră.

De ce mai populare funcții hash cum ar fi MD5 () și SHA1 () nepotrivite pentru parole?

Astfel de algoritmi hash ca MD5, SHA1 si SHA256 sunt proiectate foarte rapid și eficient. Cu o tehnologie și echipamente moderne, a devenit destul de ușor pentru a afla rezultatul acestor algoritmi prin „brute force“ pentru a determina datele de intrare originale.

Din cauza vitezei cu care computerele moderne pot „trage“ acești algoritmi de criptare, multe securitate calculator profesional este strict nu este recomandat pentru a le folosi pentru parola hashing.

În cazul în care funcțiile hash populare nu se potrivesc, cum pot, atunci trebuie să hash parolele?

Există două considerente importante atunci când hashing parole: Acesta este costul de calcul și sare. Costul mai mare de calcul algoritm de hashing, cu atât mai mult este nevoie pentru a rupe în metoda lui de retragere „brute force“.

O altă posibilitate este funcția de criptă (). care acceptă mai multe algoritmi hash în PHP 5.3 și mai târziu. Cu această funcție, puteți fi sigur că algoritmul ales este disponibil ca PHP conține propria implementare a fiecărui algoritm susținut, chiar dacă unele dintre ele nu sunt acceptate de sistemul dumneavoastră.

recomandat Blowfish algoritm, care este, de asemenea, utilizat în mod implicit în hashingul parolei API, deoarece considerabil mai complexitate de calcul decât SHA1 sau MD5, în timp ce parolele hashing încă flexibile.

Rețineți că, dacă utilizați funcția criptă () pentru a verifica parola, va trebui să ne avertizeze împotriva atacurilor de-a lungul timpului, folosind o comparație șir care durează timp constant. Nici PHP == și ===. nu strcmp funcția () nu sunt. Password_verify Funcția () doar face ceea ce ai nevoie. Se recomandă să utilizați built-in parola API hashingul. în cazul în care există o astfel de posibilitate.

sare criptografic este datele care sunt utilizate în procesul de tocare, pentru a preveni posibilitatea de a rezolva intrarea originală prin hashing lista de rezultate de căutare precalculate perechi de intrare hash, de asemenea, cunoscut sub numele de masă „irizate“.

În mai multe cuvinte simple, sarea - este o bucată de date suplimentare, care fac hash-ul este mult mai rezistent la fisurare. Există mai multe servicii online, care oferă liste extinse de hash-uri pre-calculate cu contribuția lor originală. Folosirea sării face căutarea hash care rezultă într-o listă de improbabil sau chiar imposibilă.

password_hash () generează o sare aleatorie în cazul în care nu a fost transmis, și de multe ori este cea mai bună și cea mai sigură alegere.

Cum ar trebui să depozitez sarea lor?

Când se utilizează funcția password_hash () sau criptă (). Valoarea de retur conține deja o sare, ca parte a hash creat. Această valoare trebuie să fie stocate ca acesta este în baza de date, deoarece conține informații cu privire la funcția care a fost utilizată hashing, și pot fi transferate direct la password_verify () sau criptă () cu verificarea parolei.

Graficul de mai jos prezintă formatul valorilor funcțiilor de retur ale criptei () sau password_hash (). După cum vedeți, ele conțin informații complete despre algoritmul și sarea necesară pentru verificare viitoare parolă.

sha1 împreună cu una sau mai multe valori de sare nu trebuie să fie la fel de nesigură ca și cele de mai sus face ca a fi. ex Fossil CSM creează un hash parolă SHA1 bazată pe parolă text clar al unui utilizator combinat cu numele utilizatorului și un secret cunoscut doar la magazia specifică sursa pentru care utilizatorul este configurat.