>데이터 베이스 >MySQL 튜토리얼 >솔티드 비밀번호 인증이 항상 True로 반환되는 이유는 무엇입니까?

솔티드 비밀번호 인증이 항상 True로 반환되는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-11 21:35:11872검색

Why is My Salted Password Authentication Always Returning 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.