Login logic [3]
DATE : 2023/11/11
Last updated
DATE : 2023/11/11
Last updated
다음으로 구현해볼 logic은 :
식별과 인증을 따로 수행한다.
보안을 위해 비밀번호에 hash를 실행한다.
이를 위해 username & password만 가지는 아주 단순한 DB를 준비해준다.
이때 password는 hash 과정을 거쳐 저장되기 때문에 위와 같이 이상한(?) 형태를 띄게 된다.
logic을 구현해보는 게 목적이기 때문에 일단은 SHA256 algorithm을 사용했다.
위와 같이 DB가 있다고 할 때, (실제로는 더 많은 사용자의 정보가 들어있을 것!)
식별과 인증을 수행하기 위한 코드는 다음과 같다.
사용자가 입력한 credential을 각각 변수로 만들어주고 난 후, 차이점이 하나 있다면
DB에는 현재 Hash 과정을 거친 비밀번호가 저장되기 때문에
DB의 값과 비교하기 위해선 사용자가 입력한 비밀번호를 동일한 hash로 형태를 바꿔줄 필요가 있다.
Hash function에서 말했듯이 Hash는 일방통행만 하는 함수라서
DB에 들어간 비밀번호를 다시 복원해서 사용자의 값과 비교하는 건 알맞은 방법이 아니다.
하지만 두 값을 비교는 해야 하기 때문에
반대로 사용자가 입력한 값에 hash 처리를 하는 것이다.
필요한 값을 모두 준비했으면 식별을 수행한다.
사용자가 입력한 username을 DB에서 찾아 해당 row의 password를 가져오도록 한다.
사용자가 입력한 비밀번호에 hash 처리한 값이 DB에 저장된 값과 일치한다면 로그인 성공!
일치하지 않는 다면 사용자가 입력한 비밀번호가 틀렸다는 의미로 로그인 실패다!
이렇게 비밀번호가 Hash된 경우에는 비교할 수 있도록
사용자의 입력 값(password)을 한 번 Hash하는 과정이 필요하다는 걸 알 수 있다.
다음으로 login_logic [4]로 넘어 가보자! 😄