Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengesahkan Kata Laluan Pengguna Terhadap Hash Masin dalam Pangkalan Data?

Bagaimana untuk Mengesahkan Kata Laluan Pengguna Terhadap Hash Masin dalam Pangkalan Data?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 10:00:04850semak imbas

How to Verify a User Password Against a Salted Hash in a Database?

Cara Semak sama ada Kata Laluan Padan dengan Kata Laluan Masin yang Disimpan dalam Pangkalan Data

Apabila membina aplikasi selamat, pengendalian kata laluan masin adalah penting. Walau bagaimanapun, ia boleh mencabar untuk mengesahkan kata laluan pengguna terhadap cincang masin yang disimpan dengan berkesan. Artikel ini akan membimbing anda melalui langkah-langkah yang terlibat dalam mendapatkan semula kata laluan masin daripada pangkalan data dan mengesahkan pengguna.

Mendapatkan semula Kata Laluan Masin:

Kod contoh di bawah menunjukkan bagaimana untuk mendapatkan semula cincang kata laluan masin dari pangkalan data MySQL menggunakan mysqli sambungan:

<?php
$servername = 'localhost';
$username = 'root';
$pwd = '';
$dbname = 'lp001';

$connect = new mysqli($servername,$username,$pwd,$dbname);

if ($connect->connect_error){
    die('connection failed, reason: '.$connect->connect_error);
}

$name = mysqli_real_escape_string($connect, $_POST['name']);
$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
if ($result === false){
    die(mysqli_error());
}

$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];
?>

Kod ini bersambung ke pangkalan data, membersihkan input pengguna dan mendapatkan semula garam yang dikaitkan dengan nama pengguna yang diberikan daripada jadual pengguna. Garam adalah penting untuk mengesahkan kata laluan.

Mengesahkan Kata Laluan Pengguna:

Setelah cincang kata laluan masin diambil, anda boleh mengesahkan sama ada kata laluan yang diberikan pengguna sepadan ia. Kod berikut menunjukkan cara untuk melakukan ini menggunakan fungsi password_hash() dan password_verify():

<?php
$password = mysqli_real_escape_string($connect, $_POST['password']);
$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);

$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";

if (mysqli_query($connect, $sqlQuery)){
    echo '<h1>Welcome to the member site '.$name.'</h1>';
}else{
    echo 'error adding the query: '.$sql_q.'<br> Reason: '.mysqli_error($connect);
}
?>

Di sini, kata laluan yang disediakan diasinkan menggunakan garam yang diambil, kemudian dicincang menggunakan fungsi cincang selamat. Kata laluan cincang kemudian dibandingkan dengan kata laluan cincang yang disimpan dalam pangkalan data. Jika kata laluan sepadan, pengguna disahkan.

Dengan mengikut langkah ini, anda boleh mendapatkan kata laluan masin daripada pangkalan data dengan berkesan dan mengesahkan kata laluan pengguna tanpa mendedahkan kata laluan sebenar. Pendekatan ini memastikan keselamatan kelayakan pengguna sambil menyediakan pengesahan yang cekap dan selamat.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Kata Laluan Pengguna Terhadap Hash Masin dalam Pangkalan Data?. 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