Adăugarea sării în autorizare
Acum trebuie să modificăm autorizarea. Aici schimbările vor fi mai semnificative.
Deja nu va mai fi posibil să verificăm corectitudinea perechii login-parolă imediat, cu o singură interogare. De ce: pentru că, pentru a verifica parola, trebuie să obținem hash-ul ei sărat, iar sarea este stocată în baza de date și este unică pentru fiecare login.
Va trebui mai întâi să obținem înregistrarea doar după login, să citim sarea, să sărăm parola introdusă și să comparăm cu parola sărată din bază și doar dacă acestea coincid, - să autorizăm utilizatorul.
Țineți cont că poate fi astfel încât login-ul este introdus incorect, în acest caz verificarea parolei nu poate fi efectuată, ci imediat se afișează că autorizarea nu este posibilă - datele nu sunt corecte:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
// există un utilizator cu acest login, acum trebuie verificată parola...
} else {
// nu există utilizator cu acest login, vom afișa un mesaj
}
?>
Să adăugăm verificarea parolei:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$salt = $user['salt']; // sarea din BD
$hash = $user['password']; // parola sărată din BD
$password = md5($salt . $_POST['password']); // parola sărată de la utilizator
// Comparăm hash-urile sărate
if ($password == $hash) {
// totul este în regulă, autorizăm...
} else {
// parola nu a funcționat, vom afișa un mesaj
}
} else {
// nu există utilizator cu acest login, vom afișa un mesaj
}
?>
În scopuri de securitate, utilizatorului de obicei nu i se comunică ce anume nu a funcționat - login-ul sau parola, pentru a complica generarea perechilor login-parolă de către hackeri. Pur și simplu afișează un mesaj despre faptul că perechea login-parolă este incorectă sau ceva de genul acesta.
Implementați autorizarea descrisă mai sus cu parolă sărată. Încercați să vă înregistrați, să vă autorizați, asigurați-vă că totul funcționează.