Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah password_hash() dan password_verify() PHP Boleh Menyimpan dan Mengesahkan Kata Laluan dengan Selamat?

Bagaimanakah password_hash() dan password_verify() PHP Boleh Menyimpan dan Mengesahkan Kata Laluan dengan Selamat?

DDD
Lepaskan: 2024-12-07 02:09:14
asal
1071 orang telah melayarinya

How Can PHP's password_hash() and password_verify() Functions Securely Store and Verify Passwords?

Menyimpan dan Mengesahkan Kata Laluan dengan Selamat dengan Fungsi Pengurusan Kata Laluan PHP

Berkenaan dengan pengendalian kata laluan dalam aplikasi web, keselamatan adalah yang terpenting. PHP 5.5 memperkenalkan fungsi password_hash() dan password_verify() untuk membantu dengan tugas kritikal ini.

Mencipta Cincang Selamat

Fungsi password_hash() menjana cincang selamat kata laluan yang diberikan menggunakan algoritma seperti BCRYPT. Untuk mencipta cincang, ia memerlukan tiga parameter: kata laluan itu sendiri, algoritma pencincangan (cth., PASSWORD_BCRYPT) dan pelbagai pilihan. Pilihan termasuk menentukan kos (faktor pengiraan) dan garam unik (data yang dijana secara rawak ditambah pada cincang untuk meningkatkan keunikannya).

Menyimpan Kata Laluan dan Garam

Bertentangan dengan pertanyaan awal, pendekatan yang betul adalah untuk menyimpan kedua-dua cincang dan garam dalam pangkalan data. Ini kerana password_hash() mengembalikan rentetan yang mengandungi kedua-dua elemen. Jadi, dalam pernyataan MySQL sebagai contoh:

INSERT INTO users(username, password_hash) VALUES($username, $hashAndSalt);
Salin selepas log masuk

Pengesahan Kata Laluan

Apabila pengguna log masuk, kata laluan yang mereka masukkan mesti disahkan terhadap cincang yang disimpan. Untuk melakukan ini, dapatkan semula cincang yang disimpan (yang mengandungi cincang dan garam) dan hantarkannya ke password_verify():

if (password_verify($password, $hashAndSalt)) {
    // Verified
}
Salin selepas log masuk

Langkah Keselamatan Tambahan

Selain itu penggunaan fungsi ini, pertimbangkan langkah keselamatan lain:

  • Gunakan sambungan selamat ke pangkalan data (cth., mysqli_real_connect() MySQLi dengan SSL).
  • Lindungi daripada serangan suntikan SQL.
  • Naik taraf PHP dan sambungannya secara kerap.
  • Laksanakan pengurusan sesi dan pengehadan kadar untuk mengelakkan kata laluan percubaan brute-force.

Atas ialah kandungan terperinci Bagaimanakah password_hash() dan password_verify() PHP Boleh Menyimpan dan Mengesahkan Kata Laluan dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan