One_Blog

MYSQL과 함께하는 로그인 로직 살펴보기 (식별과 인증 - 2) 본문

웹해킹

MYSQL과 함께하는 로그인 로직 살펴보기 (식별과 인증 - 2)

0xOne 2022. 10. 25. 21:47
728x90

오늘은 어제에 이어서 로그인 로직에 대해 더 알아보도록 하자.

우리가 어제 알아본 로그인 로직은

식별과 인증을 동시에 하는 로직 / 식별과 인증을 분리하는 로직

이었다. 

오늘 알아볼 로직은

식별과 인증을 동시에 하는 로직(Password를 Hash화),

식별과 인증을 분리하는 로직(Password를 Hash화)

식별과 인증을 동시에 하는 로직( + \n (줄 바꿈 개행문자 ))

이다. 

바로 알아보도록 하자.

첫번째로 알아볼 것은

Password를 hash화 하는 식별 . 인증을 동시에 하는 로직이다.

간단히 말하자면, 계정의 Password 자체를 

Hash화시켜 DB에 저장하는 것이다. 물론 그렇다고 

우리가 로그인을 할 때, Hash화 된 값을 입력할 필요는 없다.

 DB Query가 알아서 우리의 입력을 Hash로 바꿔주기 때문이다.

 

참고로 Hash화에도 많은 종류가 있는데, 간단하게 어떤 게 있는 지만 살펴보고 넘어가겠다.

 

MD5
SHA1
SHA256
SHA384
SHA512
RIPE MD 160

...

등이 있다.

우린 여기서 우리가 Password화에 사용할 Hash화 방식만 채택해주면 된다.

필자의 경우에는 MD5방식을 채택하였다.

INSERT INTO login(테이블이름)(id,pw) VALUES("admin", md5('admin'));

과 같은 형식으로, login 테이블 중 id, pw칼럼에

id에는 admin을, 

pw에는 admin을 MD5형식으로 Hash화 한 값,

21232F297A57A5A743894A0E4A801FC3

을 넣어준다.

값이 잘 들어갔는지 확인하기 위해선,SELECT * FROM login WHERE id='admin'; 을 통해 확인해주면 된다.이를 로그인 로직에 이용하기 위해선, 로그인 로직을 

이런 식으로 짜주면 된다.

SELECT * FROM login WHERE id='$username' AND pw = md5('$userpass');

이렇게 Query를 구성하면, MYSQL이 자동으로 내가 pw에 입력한 값을

MD5형식으로 Hash화 하여 DB에서 해당값을 조회해준다.

지금까지 Hash와 함께 하는 식별 . 인증 동시에 하는 로직을 알아보았다.

 

이제 두번째로, Hash와 함께 하되, 식별 . 인증을 분리하여 하는 로직을 알아보도록 하자.

이건 어제 배운 식별 . 인증 분리 로직에서 하나만 추가하면 된다.

 

쿼리문을 통해 login테이블에서 유저가 입력한 값, 즉 id=$username인 pw를 가져오고,

해당 pw를 MD5로 Hash한 값과, 내가 입력한 pw를 MD5로 Hash한 값을 비교하여

로그인의 성공 여부를 결정한다.

참 쉽쥬?

자 고럼 마지막으로 

개행을 포함한 식별 . 인증을 동시에 하는 로직을 살펴보도록 합시다.

해당 로직은 말그대로, DB에서 유저가 입력한 id, pw값을 토대로 정보를 찾을 때 사용되는

Query문에 개행문자를 포함한 로직을 의미합니다.

\n 같은 문자형태도 아니고, 말그대로 그냥 Enter 눌러서 줄바꿈 해주면, 그게 끝이다.

이게 바로 개행문자를 포함한 식별 . 인증 동시 로직이다.

 

 

오늘은 5개의 로그인 로직 중 식별 인증 동시 / 분리 + Hash, 

식별 인증 동시 + \n 로직을 알아보았습니다.

 

내일은 이 로직들을 토대로 제작한 저만의 php 페이지를 업로드 하겠습니다.

오늘도 글 읽어주셔서 감사합니다.