반응형
암호화 된 비밀번호를 확인 할 수 있는 방법입니다.
비밀번호를 암호화 하는 방법은 요기에서 볼 수 있습니다. (비밀번호 암호화 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 |