PHP의 비밀번호 해싱 문제 -password_verify()는 항상 false를 반환합니다.
P粉481035232
P粉481035232 2023-07-30 14:51:07
0
1
519
<p>PHP의 비밀번호 해싱에 문제가 있습니다. 나는 비밀번호를 등록할 때 관리자 비밀번호를 해시하고 데이터베이스에 저장하기 위해 Password_hash() 함수를 사용합니다. 그러나 로그인할 때 비밀번호 확인()을 사용하여 비밀번호를 확인하려고 하면 비밀번호가 정확하다고 확신하는데도 항상 false가 반환됩니다.

다음은 내 코드의 요약입니다:


<pre class="brush:php;toolbar:false;">$adminPassword = "test123"; $adminPasswordHash = 비밀번호_해시($adminPassword, PASSWORD_BCRYPT); // ... $adminPasswordHash를 데이터베이스에 저장합니다 ... // 로그인 중: $adminInputPassword = "test123"; $adminPasswordHashVERIFY = "$2y$10$o4qspRTirOSdyGtwHCxt6ee2i0BNChl3mEPazxVbmb534kw3ACHCm"; if (password_verify($adminInputPassword, $adminPasswordHashVERIFY)) { echo "비밀번호가 맞습니다!"; } 또 다른 { echo "비밀번호가 틀렸습니다!"; }</pre> <p>$adminPassword와 $adminInputPassword의 값이 동일한지 확인했지만 유효성 검사에서는 항상 false를 반환합니다. 또한 Password_hash() 함수를 사용하고 PASSWORD_BCRYPT 대신 PASSWORD_DEFAULT를 매개변수로 전달하려고 시도했지만 결과는 동일했습니다. </p><p>해시 생성이나 확인 과정에서 뭔가 빠졌나요? 이 문제에 대한 도움이나 통찰력을 주시면 대단히 감사하겠습니다. 감사해요!


P粉481035232
P粉481035232

모든 응답(1)
P粉099000044

문제를 찾았어요! $adminPasswordHashVERIFY 변수에 큰따옴표(")를 사용했기 때문에 문제가 발생한 것으로 보입니다. 큰따옴표를 사용하면 PHP가 문자열을 해석하고 그 안에 있는 변수를 대체합니다. $fReIQ라는 변수가 없으므로 PHP에서 이를 처리합니다. un 정의된 변수로 인해 유효성 검사 시 잘못된 해시 값이 발생합니다.

이 문제를 해결하려면 $adminPasswordHashVERIFY 변수에서 해시된 비밀번호를 작은따옴표(')로 사용하세요. 이렇게 하면 해시된 비밀번호가 일반 문자열로 처리됩니다. . PHP로 해석되는 대신

이제 다음 코드를 시도하면 "비밀번호가 정확합니다!"라는 출력이 표시됩니다. ".


으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿