Almon Dev

모의해킹 공부 (3주차 강의 정리) 본문

웹 해킹/웹 해킹

모의해킹 공부 (3주차 강의 정리)

Almon 2024. 10. 31. 16:43

로그인

 

식별과 인증

식별 : 많은 사용자들 중에 한 사람을 구분하는 것입니다
=> 외부에 노출되어도 크게 지장이 없습니다.
ex) 아이디, 이메일, 휴대폰 번호

인증 : 사용자가 제공한 식별정보가 사실인지 확인하는 것입니다
=> 외부에 노출이 되어서는 안 됩니다.
ex) 비밀번호, 지문, 얼굴인식

고유 식별 정보 : 개인마다 하나씩 부여되는 고유한 식별 정보입니다.
=> 식별 정보지만 외부에 노출되어서는 안 됩니다.
ex) 주민등록번호, 여권번호, 운전면허번호

 

로그인 로직

식별 - 인증 동시 : sql 쿼리문에서 조건문을 이용해 식별과 인증을 한 번에 처리합니다.
ex) select * from users where id='admin' and password='admin1234';

식별 - 인증 분리 sql 쿼리문으로 식별을 한 뒤 인증을 따로 처리합니다.
ex )
$sql = select * from users where id='admin';
$db_pass = sqli_query($conn, $sql)->fetch_array()['password'];
if($db_pass == $user_pass)

HASH : 해시 함수는 단방향 함수로 입력값을 로직을 걸쳐 특정 길이의 문자열로 변환합니다.
=> 단방향 함수 : 입력값을 문자열로 변환하는 것은 가능하지만 문자열로 입력값을 알아내는 것은 불가능
ex) md5, sha256

 

로그인 유지

HTTP는 요청 간의 상태를 저장하지 않는 stateless 프로토콜입니다.
요청에 대한 응답이 완료가 되면 연결을 끊어버리기 때문에 로그인 상태를 구분하는 것은 불가능합니다.
그래서 사용하게 된 것이 쿠키(Cookie)와 세션(Session)입니다.

쿠키 : 쿠키는 클라이언트에 저장되어 있는 정보이며, 지정된 사이트에 다시 요청을 보낼 때 자동으로 포함되어 보내집니다.
=> 쿠키를 이용해 로그인 정보를 저장했을 때 쿠키가 변조될 위험성이 존재합니다.

세션 : 쿠키를 대신해 사용자의 정보를 서버에 저장해 두는 공간입니다.
=> 서버에 저장되기 때문에 사용자가 변조할 수 없습니다.
=> 사용자가 어떤 세션을 사용하는 유저인지 식별하기 위해서 세션ID를 사용합니다.
=> 세션은 로그인 마다 생성되어 여러 브라우저에서 로그인이 가능합니다.
ex) 스마트폰 크롬, pc 크롬, 노트북 크롬
=> 로그아웃시 세션은 삭제됩니다.

세션ID : 사용자의 정보를 저장하고 있는 세션을 식별하기 위한 ID입니다.
=> 브라우저의 쿠키에 저장되기 때문에 사용자가 마음대로 수정할 수 있습니다.
=> 다른 사용자의 세션ID가 탈취되는 것을 막기위해 세션ID는 랜덤한 문자열로 만들어집니다.