Menambah Garam kepada Pengesahan
Sekarang kita perlu mengubah pengesahan. Perubahan di sini akan lebih ketara.
Sudah tidak mungkin untuk menyemak ketepatan pasangan log kata laluan serta-merta dengan satu pertanyaan sahaja. Mengapa: kerana, untuk menyemak kata laluan, perlu mendapatkan hash masinnya, dan garam disimpan dalam pangkalan data dan unik untuk setiap log masuk.
Perlu untuk mula-mula mendapatkan rekod hanya mengikut log masuk, baca garam, masinkan kata laluan yang dimasukkan dan bandingkan dengan kata laluan masin dari pangkalan dan hanya, jika ia sepadan, - sahkan pengguna.
Perlu diingat, mungkin berlaku log masuk dimasukkan dengan salah, dalam kes ini semakan kata laluan tidak perlu dilakukan, serta-merta keluarkan, bahawa pengesahan tidak mungkin - data tidak betul:
<?php
$login = $_POST['login'];
$query = "SELECT * FROM users WHERE login='$login'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
// pengguna dengan log masuk ini wujud, sekarang perlu menyemak kata laluan...
} else {
// pengguna dengan log masuk ini tiada, keluarkan mesej
}
?>
Mari tambah semakan kata laluan:
<?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']; // garam dari Pangkalan Data
$hash = $user['password']; // kata laluan masin dari Pangkalan Data
$password = md5($salt . $_POST['password']); // kata laluan masin dari pengguna
// Bandingkan hash masin
if ($password == $hash) {
// semua ok, sahkan...
} else {
// kata laluan tidak sesuai, keluarkan mesej
}
} else {
// pengguna dengan log masuk ini tiada, keluarkan mesej
}
?>
Atas sebab keselamatan, pengguna biasanya tidak dimaklumkan apa yang tidak sesuai - log masuk atau kata laluan, untuk menyukarkan percubaan pasangan log masuk-kata laluan oleh penggodam. Hanya keluarkan mesej tentang, bahawa pasangan log masuk-kata laluan tidak betul atau sesuatu seperti itu.
Laksanakan pengesahan dengan kata laluan masin seperti yang diterangkan di atas. Cuba daftar, sahkan diri, pastikan semuanya berfungsi.