Hashuirea parolei în PHP
A stoca parola în formă deschisă - este incorect. Un hacker rău intenționat poate obține acces la baza dvs. de date și să fure parolele.
De aceea, de obicei, login-ul este stocat în formă
deschisă, iar parola este hashuită cu o funcție specială
md5, care ia ca parametru
parola și returnează hash-ul ei, din care
nu se poate reconstitui parola inițială.
Să găsim, de exemplu, hash-ul pentru un șir oarecare:
<?php
echo md5('12345'); // va afișa '827ccb0eea8a706c4c34a16891f84e7b'
?>
Acum trebuie să modificăm înregistrarea și autentificarea noastră. Pentru început, aș sfătui să goliți tabela cu utilizatori, deoarece acolo acum sunt stocate parolele în formă deschisă, iar ar trebui să fie stocate hash-urile lor. Apoi, la testarea înregistrării, tabela se va umple cu date în noul format.
Să corectăm acum înregistrarea noastră astfel încât la salvarea noului utilizator în bază să se adauge nu parola, ci hash-ul ei.
Modificarea descrisă va arăta cam așa:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transformăm parola în hash-ul ei
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Să aplicăm modificări similare la autentificare:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transformăm parola în hash-ul ei
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Introduceți modificări în înregistrare ținând cont de hashuire, înregistrați câțiva utilizatori noi, asigurați-vă că în baza de date au fost adăugați cu parolele hashuite.
Introduceți modificări în autentificare ținând cont de hashuire, încercați să vă autentificați sub utilizatorii înregistrați anterior.