Rumah >pangkalan data >tutorial mysql >Mengapakah Pengesahan Kata Laluan Masin Saya Sentiasa Kembali Benar?
Menarik Balik Kata Laluan Masin untuk Pengesahan
Apabila melaksanakan tapak ahli dengan kata laluan masin yang disimpan dalam pangkalan data, mekanisme log masuk memerlukan perhatian yang teliti. Semasa menggunakan pendekatan kata laluan masin meningkatkan keselamatan, ia juga boleh menimbulkan cabaran dalam mengesahkan kelayakan pengguna.
Masalah:
Ralat berlaku pada halaman log masuk ahli, di mana mana-mana entri nampaknya melepasi semakan untuk mengesahkan kewujudan pengguna. Khususnya, penilaian $result === false sentiasa mengembalikan palsu, menghalang tingkah laku yang dijangkakan.
Penyelesaian:
Punca isu terletak pada pendekatan untuk mendapatkan semula cincang kata laluan daripada pangkalan data. Untuk mengesahkan kelayakan pengguna, seseorang mesti mendapatkan semula cincang kata laluan masin yang sepadan dengan nama pengguna yang disediakan:
$saltQuery = "SELECT salt FROM users WHERE name = '$name';"; $result = mysqli_query($connect, $saltQuery); $row = mysqli_fetch_assoc($result); $salt = $row['salt'];
Setelah garam diperoleh, ia harus digunakan untuk mencincang kata laluan yang disediakan:
$saltedPW = $password.$salt; $hashedPW = hash('sha256', $saltedPW);
Kata laluan cincang yang terhasil kemudiannya harus digunakan untuk menanyakan pangkalan data untuk pengguna kewujudan:
$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";
Pertimbangan Lanjut:
Apabila mengesahkan kata laluan, adalah penting untuk menggunakan fungsi pencincangan kata laluan yang kukuh seperti bcrypt atau Argon2, yang menyediakan keselamatan dan intensif masa algoritma pencincangan. Selain itu, pernyataan yang disediakan harus digunakan untuk mencegah serangan suntikan SQL.
Atas ialah kandungan terperinci Mengapakah Pengesahan Kata Laluan Masin Saya Sentiasa Kembali Benar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!