집 >데이터 베이스 >MySQL 튜토리얼 >솔티드 비밀번호 인증이 항상 True로 반환되는 이유는 무엇입니까?
인증을 위한 솔티드 비밀번호 철회
데이터베이스에 저장된 솔티드 비밀번호로 회원 사이트를 구현할 때 로그인 메커니즘에 세심한 주의가 필요합니다. 솔티드 비밀번호 접근 방식을 사용하면 보안이 강화되지만 사용자 자격 증명을 확인하는 데 어려움을 겪을 수도 있습니다.
문제:
회원 로그인 페이지에서 오류가 발생합니다. 항목이 사용자 존재 확인을 위한 검사를 통과한 것 같습니다. 특히 $result === false 평가는 항상 false를 반환하여 예상되는 동작을 방지합니다.
해결책:
문제의 근본 원인은 접근 방식에 있습니다. 데이터베이스에서 비밀번호 해시를 검색합니다. 사용자 자격 증명을 확인하려면 먼저 제공된 사용자 이름에 해당하는 솔트 처리된 비밀번호 해시를 검색해야 합니다.
$saltQuery = "SELECT salt FROM users WHERE name = '$name';"; $result = mysqli_query($connect, $saltQuery); $row = mysqli_fetch_assoc($result); $salt = $row['salt'];
솔트를 얻은 후에는 제공된 비밀번호를 해시하는 데 사용해야 합니다.
$saltedPW = $password.$salt; $hashedPW = hash('sha256', $saltedPW);
그런 다음 해시된 비밀번호를 사용하여 데이터베이스에서 사용자의 비밀번호를 쿼리해야 합니다. 존재:
$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";
추가 고려 사항:
비밀번호를 확인할 때 안전하고 시간 집약적인 기능을 제공하는 bcrypt 또는 Argon2와 같은 강력한 비밀번호 해싱 기능을 사용하는 것이 중요합니다. 해싱 알고리즘. 또한, SQL 인젝션 공격을 방지하기 위해 준비된 문장을 사용해야 합니다.
위 내용은 솔티드 비밀번호 인증이 항상 True로 반환되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!