Shtimi i kripës në autorizim
Tani na duhet të ndryshojmë autorizimin. Këtu ndryshimet do të jenë më të rëndësishme.
Nuk do të jetë më e mundur të kontrollosh saktësinë e çiftit login-fjalëkalim menjëherë, me një kërkesë të vetme. Pse: sepse, për të kontrolluar fjalëkalimin, duhet të marrësh hash-in e tij të kripur, dhe kripa ruhet në bazën e të dhënave dhe është unike për çdo login.
Do të duhet që fillimisht të marrësh regjistrimin vetëm nga login-i, të lexosh kripën, ta kripësh fjalëkalimin e futur dhe ta krahasosh me fjalëkalimin e kripur nga baza dhe vetëm, nëse përputhen, - të autorizosh përdoruesit.
Kini parasysh se mund të ndodhë që login-i të jetë shkruar gabim, në këtë rast kontrollimi i fjalëkalimit nuk mund të kryhet, por menjëherë duhet të tregohet se autorizimi nuk është i mundur - të dhënat nuk janë të sakta:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
// ka një përdorues me këtë login, tani duhet të kontrollohet fjalëkalimi...
} else {
// nuk ka përdorues me këtë login, do të shfaqim një mesazh
}
?>
Le të shtojmë kontrollin e fjalëkalimit:
<?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']; // kripa nga DB
$hash = $user['password']; // fjalëkalimi i kripur nga DB
$password = md5($salt . $_POST['password']); // fjalëkalimi i kripur nga përdoruesi
// Krahasojmë hash-et e kripur
if ($password == $hash) {
// gjithçka në rregull, autorizojmë...
} else {
// fjalëkalimi nuk përputhet, do të shfaqim një mesazh
}
} else {
// nuk ka përdorues me këtë login, do të shfaqim një mesazh
}
?>
Për arsye sigurie, përdoruesit zakonisht nuk i tregohet se çfarë saktësisht nuk përputhet - login-i apo fjalëkalimi, për ta ndërlikuar përpilimin e çifteve login-fjalëkalim nga hakerët. Thjesht shfaqet një mesazh se çifti login-fjalëkalim është i pasaktë ose diçka e tillë.
Implementoni autorizimin e përshkruar më sipër me fjalëkalim të kripur. Provoni të regjistroheni, autorizohuni, verifikoni që gjithçka funksionon.