보안 애플리케이션을 구축할 때 솔트 비밀번호를 처리하는 것이 중요합니다. 그러나 저장된 솔트 해시에 대해 사용자 비밀번호를 효과적으로 확인하는 것은 어려울 수 있습니다. 이 문서에서는 데이터베이스에서 솔트된 비밀번호를 검색하고 사용자를 인증하는 단계를 안내합니다.
솔트된 비밀번호 검색:
아래 예제 코드는 다음을 보여줍니다. mysqli 연결을 사용하여 MySQL 데이터베이스에서 솔트 처리된 비밀번호 해시를 검색하는 방법:
<?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']; ?>
이 코드는 데이터베이스에 연결하고, 사용자 입력을 삭제하고, 사용자 테이블에서 지정된 사용자 이름과 관련된 솔트를 검색합니다. . 솔트는 비밀번호 확인에 필수적입니다.
사용자 비밀번호 확인:
솔트된 비밀번호 해시가 검색되면 사용자가 제공한 비밀번호가 일치하는지 확인할 수 있습니다. 그것. 다음 코드는password_hash() 및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); } ?>
여기서 제공된 비밀번호는 검색된 솔트를 사용하여 솔트 처리된 다음 보안 해시 기능을 사용하여 해시됩니다. 그런 다음 해시된 비밀번호는 데이터베이스에 저장된 해시된 비밀번호와 비교됩니다. 비밀번호가 일치하면 사용자가 인증됩니다.
이 단계를 수행하면 데이터베이스에서 솔트된 비밀번호를 효과적으로 검색하고 실제 비밀번호를 노출하지 않고도 사용자의 비밀번호를 확인할 수 있습니다. 이 접근 방식은 효율적이고 안전한 인증을 제공하는 동시에 사용자 자격 증명의 보안을 보장합니다.
위 내용은 데이터베이스의 솔트 해시에 대해 사용자 비밀번호를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!