Login logic [4]

DATE : 2023/11/11

Login logic [4] :

  • 비밀번호를 hash 처리한다.

  • 식별과 인증을 동시에 진행한다.

나머지 요소는 [3]과 동일하므로 바로 코드를 확인해보자.

[ login_logic4.php ]

<?php
    require_once("db_connection.php");

    $user = $_POST['user'];
    $password = $_POST['password'];
    
    $hash_pass = hash('sha256', $password);
    $sql = "select * from login_logic where username = '$user' and password = '$hash_pass'"; // 식별 & 인증 
    $res = mysqli_query($conn, $sql);

    if(mysqli_num_rows($res) > 0) {
        echo '<script>alert("Login Success")</script>';
    } else {
        echo '<script>alert("Login Fail")</script>';
    }
?>

이번에 살펴볼 logic 또한 hash된 비밀번호를 다루고 있음으로

사용자가 입력한 비밀번호를 미리 hash 처리해준다.

[3]과 비교했을 때, [4]에서는 식별과 인증을 동시에 처리하기 때문에 실행하는 SQL이 달라진다.

SELECT * FROM login_logic WHERE username = '$user' AND password = '$hash_pass'

[2]에서 실행했던 SQL과 형태가 동일하다는 걸 알 수 있다!

다만 DB에는 hash 처리된 비밀번호가 들어있기 때문에 $password가 아닌 $hash_pass를

사용해야 한다는 점이 포인트!

사용자가 입력한 비밀번호가 일치한다면 hash된 값도 동일하기 때문에

(1) username이 $user인 동시에 (= 식별)

(2) password가 $hash_pass인 row가 존재한다면! (= 인증)

로그인에 성공하게 된다.

만약 존재하지 않는 username을 입력하거나 password가 틀린 경우에는

해당하는 row가 없기 때문에 else문이 실행된다는 걸 예측할 수 있다. 😎

Last updated