Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Simpan dan urus cincang kata laluan dengan cara selamat menggunakan PHP

Simpan dan urus cincang kata laluan dengan cara selamat menggunakan PHP

WBOY
WBOYasal
2023-07-06 14:00:141373semak imbas

Simpan dan urus cincang kata laluan dengan cara yang selamat menggunakan PHP

Dalam aplikasi web moden, keselamatan kata laluan pengguna adalah penting. Untuk melindungi kata laluan pengguna, kami memerlukan cara yang selamat untuk menyimpan dan mengurus cincang kata laluan. Dalam PHP, kita boleh mencapai ini menggunakan beberapa algoritma pencincangan kata laluan yang berkuasa dan fungsi yang berkaitan.

Secara umumnya, kita tidak seharusnya menyimpan kata laluan pengguna dalam teks yang jelas, kerana sebaik sahaja pangkalan data bocor, kata laluan pengguna akan terdedah sepenuhnya. Sebaliknya, kita boleh menggunakan fungsi cincang kata laluan untuk menukar kata laluan pengguna kepada nilai cincang yang tidak boleh diubah dan menyimpannya dalam pangkalan data. Apabila pengguna log masuk, kita boleh mencincang kata laluan yang dihantar oleh pengguna sekali lagi menggunakan fungsi cincang yang sama dan membandingkannya dengan nilai cincang yang disimpan dalam pangkalan data.

Berikut ialah contoh kod menggunakan fungsi cincang kata laluan dalam PHP:

<?php

// 用户注册时将密码哈希化存储
function register($username, $password) {
    // 生成随机盐值
    $salt = bin2hex(random_bytes(16));

    // 哈希密码
    $hashedPassword = password_hash($password . $salt, PASSWORD_DEFAULT);

    // 存储用户名、哈希密码和盐值到数据库
    // ...
}

// 用户登录时验证密码
function login($username, $password) {
    // 从数据库中获取用户的哈希密码和盐值
    // ...

    // 计算哈希值
    $hashedPassword = password_hash($password . $salt, PASSWORD_DEFAULT);

    // 比对哈希值
    if (password_verify($hashedPassword, $storedHashedPassword)) {
        // 密码匹配,登录成功
        // ...
    } else {
        // 密码不匹配,登录失败
        // ...
    }
}

?>

Dalam kod contoh di atas, apabila pengguna mendaftar, nilai garam rawak pertama kali dijana (anda boleh menggunakan random_bytes()fungsi), kemudian gabungkan kata laluan dan garam dan cincangnya menggunakan fungsi <code>password_hash(). Akhir sekali, simpan nama pengguna, kata laluan cincang dan garam ke dalam pangkalan data. random_bytes()函数生成),然后将密码和盐值连接起来并使用password_hash()函数进行哈希计算。最后,将用户名、哈希密码和盐值存储到数据库中。

当用户登录时,首先从数据库中获取用户的哈希密码和盐值。然后,将用户提交的密码与盐值连接起来,再次使用password_hash()函数进行哈希计算。最后,使用password_verify()

Apabila pengguna log masuk, mula-mula dapatkan kata laluan cincang pengguna dan nilai garam daripada pangkalan data. Kata laluan yang diserahkan pengguna kemudiannya digabungkan dengan nilai garam dan dicincang semula menggunakan fungsi password_hash(). Akhir sekali, gunakan fungsi password_verify() untuk membandingkan kata laluan cincang yang diserahkan oleh pengguna dengan kata laluan cincang yang disimpan dalam pangkalan data. Jika perlawanan berjaya, kata laluan adalah betul dan pengguna berjaya log masuk jika tidak, log masuk gagal.

Kelebihan kaedah ini ialah walaupun pangkalan data diperolehi oleh penyerang, penyerang tidak boleh terus mendapatkan kata laluan teks biasa pengguna kerana algoritma cincang tidak boleh diterbalikkan. Pada masa yang sama, memandangkan setiap pengguna mempunyai nilai garam yang unik, walaupun dua pengguna menggunakan kata laluan yang sama, nilai hash mereka akan berbeza sama sekali, sekali gus meningkatkan kesukaran untuk memecahkan kata laluan.

Sudah tentu, untuk melindungi keselamatan kata laluan, kami juga boleh mengambil beberapa langkah tambahan, seperti menggunakan dasar kata laluan yang kompleks (seperti panjang, keperluan untuk mengandungi huruf besar, nombor dan aksara khas), pemilihan kekuatan pengasinan, dan nilai garam penggantian biasa, dsb. Selain itu, ia juga merupakan amalan yang baik untuk mengemas kini algoritma pencincangan kata laluan secara kerap yang digunakan dalam aplikasi anda untuk mengelakkan kelemahan yang diketahui dalam algoritma pencincangan yang boleh dieksploitasi oleh penyerang.

Ringkasnya, menggunakan sepenuhnya fungsi cincang kata laluan yang disediakan dalam PHP boleh membantu kami menyimpan dan mengurus kata laluan pengguna dengan selamat, dengan itu melindungi maklumat peribadi pengguna dan keselamatan akaun. Sama pentingnya, kita juga perlu memberi perhatian kepada langkah keselamatan lain, seperti mencegah suntikan SQL, menggunakan penyulitan SSL untuk menghantar maklumat sensitif, dsb. Hanya dengan menggunakan langkah keselamatan ini secara menyeluruh kita boleh membina aplikasi rangkaian yang selamat dan boleh dipercayai. 🎜

Atas ialah kandungan terperinci Simpan dan urus cincang kata laluan dengan cara selamat menggunakan PHP. 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