본문 바로가기

개발/PHP

비밀번호 암호화 확인 password_verity

반응형


암호화 된 비밀번호를 확인 할 수 있는 방법입니다.

비밀번호를 암호화 하는 방법은 요기에서 볼 수 있습니다. (비밀번호 암호화 password_hash)


password_hash 함수로 나온 해시값을 비교할 수 있는 방법을 PHP에서 함수를 제공하는데요.

바로 password_verity 입니다. 이 역시 PHP 5.5.0 부터 사용 가능합니다.


사용방법 :

$password = 'playon';
$password_hash = password_hash($password, PASSWORD_DEFAULT);

if (password_verify('tistory', $password_hash)) {
  echo '맞음요';
} else {
  echo '틀림요';
}

// 결과 :
틀림요

이런식으로 사용하면 됩니다. playon을 해시를 했는데 tistory가 들어와서 틀림요를 출력하는거죠.



일단 사용방법은 위 처럼 사용하면 되고 돌아가는걸 보자면,


사용자로 입력 받은 비밀번호를 암호화 해서 DB에 저장합니다.

$user_password = $_POST['password'];
$password_hash = password_hash($user_password, PASSWORD_DEFAULT);

$query = "INSERT INTO `USER_TABLE` (id, password) VALUES ('$id', '$user_password')";

이런식으로요. 쿼리문은 기본적인 쿼리문입니다. PDO등을 사용하면 쿼리문은 달라지죠.



사용자가 로그인하기 위해 아이디와 비밀번호를 입력하고 로그인 버튼을 눌렀다고 하면,

$user_id = $_POST['id'];
$user_password = $_POST['password'];

$query = "SELECT id, password FROM `USER_TABLE` WHERE id = '$user_id'";
// 이렇게 쿼리를 날려서 $row에 담고
$password_hash = $row['password'];

if (password_verify($user_password, $password_hash)) {
  echo '맞았으니 로그인 통과';
} else {
  echo '틀렸으니 로그인 노노';
}

이런식으로 하면 될 것 같군요.

더 좋은 방법이 있거나 하면 글을 업데이트 하겠습니다.


$user_id = $_POST['id'];
$user_password = $_POST['password'];

$query = "SELECT id, password FROM `USER_TABLE` WHERE id = '$user_id' AND password = '$user_password'";

이전에는 아래 처럼 아이디와 비밀번호를 비교했는데 password_hash값은 매번 바뀌기 때문에 비교를 못하니 위 방법 처럼은 안되겠죠?


암호화한 비밀번호를 확인하는 방법을 봤는데요.

보안은 아무리 강조해도 중요한 내용이니 신경을 좀 더 써주시면 좋을 것 같습니다.


password_verity 의 자세한 내용은

http://php.net/manual/kr/function.password-verify.php 에서 확인 가능합니다.



반응형

'개발 > PHP' 카테고리의 다른 글

PHP setCookie 사용법(보안, secure, httponly)  (0) 2022.11.10
Google reCAPTCHA v3 적용하기  (1) 2019.07.04
define(): 상수의 정의  (0) 2019.06.05
비밀번호 암호화 password_hash  (0) 2018.10.26
PHP 에러를 표시하기  (0) 2017.06.12