2017-12-07 19 views
0

sha512.js 파일을 사용하고 보안 목적으로 비밀번호를 요청 후 해시 값으로 보냅니다. 이제 데이터베이스에 저장된 해시 비밀번호를 확인하고 싶습니다. 브라우저를 점검 할 때 해시 값으로 암호를 볼 수 있습니다. 그럼 내 PHP 파일에서 나는 게시물 요청과 함께 비밀 번호 값을 얻을. 그런 다음 데이터베이스 저장된 값으로 확인하고 싶습니다. 7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13로깅 해시 암호화 된 비밀번호를 확인하는 방법은 데이터베이스에 저장된 해쉬 된 비밀번호와 일치합니다.

$email = $_POST['email']; 
$passwordFromPost = $_POST['p']; 

// $passwordFromPost = '7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13'; 

내 데이터베이스 암호입니다 - - 같은

내 게시물 요청 암호 값 : DB 해시 값과 POST 요청의 해시 값을 확인하는 방법

$hashedPasswordFromDB = '$2y$11$2Nmsc11WWGZ1xEB8P3zWCezVv4QCe48BVQ8vJbXOkByUXIioWH.AS' 

if (password_verify($passwordFromPost, $hashedPasswordFromDB)) { 
    echo 'Password is valid!'; 
} else { 

.

+1

웹 서버로 보내기 전에 브라우저에서 암호를 해시하는 특별한 이유가 있습니까? https를 사용하고 있다면 (그렇게해야 함) –

+0

사용자 레코드를 만들 때 등록 화면을 통해 동일한 해시를 보냅니 까? –

+0

나는 암호 값을 보내고 해시 값을 db에 저장했다. 그런 다음 암호 행 vancab12390909와 hashvalue는 $ 2y $ 11 $ 2Nmsc11WWGZ1xEB8P3zWCezVv4QCe48BVQ8vJbXOkByUXIioWH.AS와 같이 db에있게됩니다. – user2552863

답변

2

클라이언트에서 암호를 해시하지 말고 HTTPS를 사용하여 POST 데이터의 일반 텍스트로 보내십시오. 패스워드의 해시를 보내면 해시가 패스워드가됩니다.

PHP를 사용하면 password_hashpassword_verify이므로이 쌍은 안전하고 사용하기 쉽습니다.

추가 정보 : 암호 검증기를 저장할 때 해시 함수만으로는 충분하지 않으며 소금을 추가하면 보안을 향상시키는 데별로 도움이되지 않습니다. 대신 PBKDF2, Rfc2898DeriveBytes, Argon2, password_hash, Bcrypt 또는 약 100ms의 지속 시간과 같은 기능을 사용하십시오. 요점은 공격자가 무차별 한 암호를 찾기 위해 상당한 시간을 소비하게하는 것입니다.