-
인증과 식별&로그인 로직 4가지IT/웹 개발 2023. 11. 15. 16:22
[이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]
DB 연동으로 회원가입 페이지를 만들고 회원가입 정보를 바탕으로 로그인하는 과정을 공부하며 로그인 로직이 여러 개가 있다는 것을 알게 되었고 인증과 식별에 관해 공부를 하고 정리를 해보았다.
- 인증
수많은 데이터 중에서 특정데이터를 찾아내는 집어내는 작업
쉽게 예를 들면 여권이나 주민등록증을 내가 가지고 있고 어떠한 심사에서 이걸 제시하고 '나'라는 걸 확인하는 절차를 인증이라 한다. 로그인 인증에서 아이디(식별) + 비밀번호(인증정보)로 비밀번호는 절대 노출돼서는 안 된다.
- 식별
주민등록증, 여권 등 과 같이 고유의 번호 및 문자 등으로 구별해 내는 수단이며 웹서버에서 유저가 로그인하기 위해 입력하는 아이디도 식별로 생각하면 된다. 한 웹 사이트에서 동일한 아이디는 가질 수 없는 것을 볼 수 있다. 회원가입 시 로그인 중복 체크를 하는 것도 이와 같다. 확인하는 작업으로 아이디는(식별값) 노출이 돼도 상관이 없는 값이다.
로그인 로직
- 동시에 인증
- 분리하여 인증
- 동시+해쉬처리하여 인증
- 분리+해쉬처리하여 인증
이렇게 간단하게 4가지가 있고 본인만의 방법으로 위 방법 말고도 다양하게 로직을 짜 볼 수 있다. (아이디어 뱅크라면...)
1. 동시 인증
Select 문에서 아이디와 비밀번호를 동시에 가져와 인증하는 코드
2. 분리 인증
Select 문에서 아이디만 가져와 그 아이디에 맞는 row값을 배열로 가져와 비밀번호가 맞는지 인증하는 코드
3. 동시 + 해쉬처리
1번과 sql문은 같지만 비밀번호를 담은 변수에 hash함수로 둘러싸고 암호화 방식 (sha256 말고도 md5 등등 가능)을 적용한 코드
(만약 오류가 뜬다면 db에서 비밀번호 길이를 늘리도록 하자)
echo로 해쉬처리가 잘 되었는지 확인해 보았다. 4. 분리 + 해쉬처리
3번과 같이 2번의 분리코드에 해쉬처리를 한 코드이다. (해쉬처리가 잘 됐는지 확인한 echo 결과 페이지는 생략)
여기서 로그인 인증 코드에서만 해쉬처리를 하면 인증이 먹히지않는다. 로그인 입력 페이지의 코드에서 POST로 입력받을 암호 또한 해쉬 처리를 해 놓아야 한다.
회원가입 입력 정보를 저장한 해쉬처리된 홍길동의 비밀번호 해쉬처리를 하는 이유는 해쉬가 단뱡향이라 해커가 이 db를 해킹하여 비밀번호를 알아냈다 하더라도 다른 웹사이트에서 쓸 수 없게 된다. 마치 고기를 잘 게 다져놓고 이 고기를 다시 원래 상태로 되돌려 놓으라 하면 할 수 없듯 말이다. 그렇지만 어렵지 않게 비밀번호를 만들어 놓으면 해쉬처리된걸 역으로 되돌릴 수 있으니 반드시 단순한 비밀번호를 사용하는 걸 지양해야 한다. 그리고 비밀번호를 서버에서 해쉬처리할 때 해커가 탈취했을 때를 대비하여 비밀번호 앞에 랜덤한 문자열을 여러 개 붙여놓고 해쉬처리를 한다고 한다.
(ex 12345 를 비밀번호로 저장했다고 하면 sfdaDFSs24'12345'이 상태로 만들어 해쉬처리)
다양한 로그인 로직으로 인증하는 것을 공부해봤다. 이렇게 여러 가지 방식이 있다면 해커 입장에서도 간단한 로그인 로직방식이 아니면 해킹하는데 좀 더 애를 먹거나 뚫을 수 없게 만들 수 있다. 그래서 웹 사이트를 만든다면 비밀번호 암호화는 필수인 것이다. 이번 실습은 만들어놓은 코드에 인증 절차만 수정하는 작업이어서 좀 더 수월했던 것 같다.
'IT > 웹 개발' 카테고리의 다른 글
마이페이지 만들기_1 (0) 2024.02.27 메인페이지 만들기 (0) 2024.02.27 로그인 DB연동하기 (0) 2023.11.15 회원가입 페이지 만들기 & DB연동하기 (0) 2023.11.13 웹 서버와 DB연동하기 (phpmyadmin, db만들기, 간단한 sql) (0) 2023.11.07