Rumah >pembangunan bahagian belakang >tutorial php >Petua Pantas: Cara Hash Kata Laluan di PHP
Dalam mana -mana bahasa pengaturcaraan, adalah penting untuk memahami cara hash kata laluan. Artikel ini dengan cepat akan menjelaskan cara melaksanakan hashing kata laluan di PHP dan menjelaskan kepentingannya.
Setiap pengaturcara PHP akan menulis aplikasi yang bergantung pada log masuk pengguna untuk berjalan dengan betul pada beberapa peringkat. Nama pengguna dan kata laluan biasanya disimpan dalam pangkalan data dan kemudian digunakan untuk pengesahan. Seperti yang kita ketahui, kata laluan tidak boleh disimpan dalam pangkalan data dalam teks biasa: Jika pangkalan data dikompromi, semua kata laluan akan dieksploitasi oleh penyerang yang berniat jahat. Inilah sebabnya mengapa kita perlu belajar bagaimana hash kata laluan.
Perhatikan bahawa kita menggunakan perkataan "hash" dan bukannya "penyulitan". Ini kerana hashing dan penyulitan adalah dua proses yang sama sekali berbeza yang sering dikelirukan.
hash
kita boleh membandingkan dua nilai hash untuk memeriksa sama ada kedua -duanya berasal dari rentetan asal yang sama. Kemudian dalam artikel ini, kita akan melihat bagaimana untuk melaksanakan proses ini menggunakan PHP.
penyulitan
Jika kita menyulitkan kata laluan dan bukannya hashing, dan pangkalan data yang kami gunakan diakses oleh pihak ketiga yang berniat jahat dalam beberapa cara, maka semua akaun pengguna akan terancam - ini jelas bukan senario yang baik.
Tambah garam
Dengan menambahkan garam ke kata laluan, kita boleh menghalang serangan kamus (penyerang secara sistematik memasuki setiap perkataan dalam kamus sebagai kata laluan) dan serangan meja pelangi (penyerang menggunakan senarai hash kata laluan biasa).
Selain menambah garam, kita juga harus menggunakan algoritma yang agak selamat ketika hashing. Ini bermakna ia harus menjadi algoritma yang belum retak lagi, sebaiknya algoritma khusus dan bukannya umum (seperti SHA512).
Sehingga 2023, algoritma hash yang disyorkan ialah:
Pada masa ini, ia menggunakan bcrypt secara lalai dan menyokong algoritma hash lain seperti argon2. Fungsi password_hash()
juga akan menambah garam secara automatik ke kata laluan kami.
akhir, ia mengembalikan kata laluan hashed. "Kos" dan "garam" dikembalikan sebagai sebahagian daripada hash.
Cukup, kos dalam kata laluan hash merujuk kepada jumlah pengiraan yang diperlukan untuk menghasilkan hash. Ia seperti mengukur "kesukaran" membuat hash. Semakin tinggi kos, semakin besar kesukaran.
Bayangkan anda mahu membuat kek dan resipi untuk kek itu berkata "Pukul telur selama lima minit." Itulah "kos" membuat kek itu. Jika anda ingin membuat kek lebih "selamat", anda mungkin menukar resipi untuk "mengalahkan telur selama sepuluh minit." Ia mengambil masa lebih lama untuk membuat kek sekarang, yang seperti menambah "kos" membuat kek.
seperti yang kita baca dalam dokumen password_hash()
:
... semua maklumat yang diperlukan untuk mengesahkan hash dimasukkan. Ini membolehkan fungsi
password_verify()
untuk mengesahkan hash tanpa perlu menyimpan maklumat garam atau algoritma secara berasingan.
Ini memastikan bahawa kita tidak perlu menyimpan maklumat lain dalam pangkalan data untuk mengesahkan nilai hash.
Malah, nampaknya ini:
<code class="language-php"><?php $password = "sitepoint"; $hashed_password = password_hash($password, PASSWORD_DEFAULT); if (password_verify($password, $hashed_password)) { //如果输入的密码与哈希密码匹配,则登录成功 } else { //重定向到主页 }</code>3
password_hash()
Kesimpulan password_verify()
seperti yang dikatakan oleh Tom Butler dalam PHP & MySQL: Novice to Ninja: password_hash()
bernasib baik, PHP termasuk kaedah hashing kata laluan yang sangat selamat. Ia dicipta oleh orang -orang yang mengetahui aspek -aspek ini lebih baik daripada anda dan saya, dan ia mengelakkan pemaju seperti kita yang perlu memahami sepenuhnya isu -isu keselamatan yang mungkin timbul. Oleh itu, sangat disyorkan bahawa kami mempunyai kata laluan hashing menggunakan algoritma PHP terbina dalam dan bukannya membuat sendiri.
soalan yang sering ditanya mengenai Hashing Kata Laluan PHPPastikan untuk menyimpan ini dalam fikiran dan tetap up to date dengan algoritma hash yang disyorkan terkini untuk memastikan keselamatan terbaik permohonan anda.
Apakah kata laluan hashing dan mengapa penting dalam php? Hashing Kata Laluan adalah proses menukar kata laluan plaintext ke dalam rentetan aksara yang tidak dapat dipulihkan. Dalam PHP, penting kerana ia dapat melindungi kata laluan pengguna dengan menyimpannya dalam bentuk hash, menjadikannya sukar bagi penyerang untuk mendapatkan kata laluan asal.
dan
, dan algoritma bcrypt digunakan secara lalai. BCRYPT disyorkan kerana ia adalah pilihan hashing kata laluan yang selamat. bagaimana hash kata laluan dalam php? Anda boleh hash kata laluan menggunakan fungsi password_hash()
. Contohnya: password_hash($password, PASSWORD_BCRYPT)
. Ia memeriksa jika kata laluan yang diberikan sepadan dengan versi hashed yang disimpan dalam pangkalan data. password_verify()
secara automatik menjana garam, jadi anda tidak perlu menguruskannya secara manual. password_hash()
Atas ialah kandungan terperinci Petua Pantas: Cara Hash Kata Laluan di PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!