>  기사  >  백엔드 개발  >  Password_Verify() 함수가 해시된 비밀번호를 확인하지 않는 이유는 무엇입니까?

Password_Verify() 함수가 해시된 비밀번호를 확인하지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-21 07:07:30919검색

Why is the Password_Verify() Function Not Verifying Hashed Passwords?

PHP 비밀번호 해시(), 비밀번호 확인()

등록 스크립트에서는 PHP의 비밀번호 해시() 함수를 사용하여 사용자 비밀번호를 암호화하고 데이터베이스에 저장합니다. . 사용자가 로그인을 시도하면, 입력한 비밀번호를 데이터베이스의 해시된 버전과 비교하기 위해 비밀번호 확인()을 사용하게 됩니다. 그러나 비밀번호가 일치하지 않습니다. 이는 비밀번호 확인() 호출에 문제가 있음을 나타냅니다.

password_verify() 사용법

password_verify()는 두 개의 매개변수를 사용합니다.

  • $password: 로그인 시 사용자가 입력한 일반 텍스트 비밀번호.
  • $hash: 데이터베이스에 저장된 해시된 비밀번호.

일반 텍스트 비밀번호와 해시된 버전을 비교하여 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

코드 문제

로그인 스크립트에서 일반 텍스트 비밀번호($pwd)와 해시된 비밀번호($password)를 Password_verify()에 전달합니다.

if(($user_id == $p_num) && (password_verify($pwd, $password))){

그러나 var_dump()를 사용하여 작업 중에 변수를 검사할 수도 있습니다. 비교를 통해 값이 변경될 수 있습니다. var_dump() 출력은 일반 텍스트 비밀번호($pwd)가 "1"로 수정되는 반면 해시된 비밀번호($password)는 데이터베이스에 저장된 것과 동일하게 유지됨을 보여줍니다.

올바른 사용법

문제를 해결하려면 코드에서 var_dump() 호출을 제거하고 $pwd에 로그인 중에 사용자가 입력한 일반 텍스트 비밀번호가 포함되어 있는지 확인하세요. 로그인 코드는 다음과 같습니다.

if(($user_id == $p_num) && (password_verify($pwd, $password))){

위 내용은 Password_Verify() 함수가 해시된 비밀번호를 확인하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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