Mengapakah pengesahan kata laluan PHP gagal dengan ketidakpadanan cincang kata laluan?

Linda Hamilton
Lepaskan: 2024-10-21 07:04:02
asal
571 orang telah melayarinya

Why does PHP password verification fail with a password hash mismatch?

PHP password_hash(), password_verify()

Dalam skrip pendaftaran anda, anda mencincang kata laluan menggunakan password_hash() dan menyimpannya dengan betul pangkalan data. Walau bagaimanapun, apabila mengesahkan kata laluan semasa log masuk menggunakan password_verify(), anda menghadapi ketidakpadanan.

Coretan yang anda berikan menunjukkan bahawa kata laluan yang disimpan dalam pangkalan data telah dicincang (bermula dengan "$2y$10$") , manakala kata laluan yang dimasukkan oleh pengguna adalah dalam teks biasa (rentetan(1) "1"). Masalahnya terletak pada cara anda mendapatkan semula kata laluan daripada pangkalan data.

Dalam skrip log masuk, anda mendapatkan semula lajur kata laluan terus daripada hasil pangkalan data tanpa sebarang pemprosesan lanjut. Walau bagaimanapun, kata laluan yang disimpan dicincang dan ia perlu dinyahcincang sebelum ia boleh dibandingkan dengan kata laluan teks biasa yang dimasukkan oleh pengguna menggunakan password_verify().

Penyelesaian:

Dalam skrip log masuk, sebelum menggunakan password_verify(), anda perlu mendapatkan semula kata laluan cincang yang disimpan daripada pangkalan data dan kemudian nyahcincang menggunakan fungsi password_hash() dengan algoritma PASSWORD_DEFAULT. Berikut ialah kod yang diperbetulkan untuk skrip log masuk:

<code class="php">// ...same code as before...

$stored_hash = $row['password']; // Retrieve the stored hashed password
if (password_verify($pwd, $stored_hash)) {
    // ...same code as before...
}</code>
Salin selepas log masuk

Pengubahsuaian ini memastikan kata laluan yang disimpan dalam pangkalan data tidak dicincang dengan betul sebelum dibandingkan dengan kata laluan teks biasa yang dimasukkan oleh pengguna, membenarkan password_verify() berfungsi dengan betul.

Atas ialah kandungan terperinci Mengapakah pengesahan kata laluan PHP gagal dengan ketidakpadanan cincang kata laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!