Rumah >pangkalan data >tutorial mysql >Mengapakah Pengesahan Kata Laluan Masin Saya Sentiasa Kembali Benar?

Mengapakah Pengesahan Kata Laluan Masin Saya Sentiasa Kembali Benar?

DDD
DDDasal
2024-12-11 21:35:11872semak imbas

Why is My Salted Password Authentication Always Returning True?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn