일반적으로 웹에서 사용하는 프로토콜인 HTTP는 stateless 프로토콜이다. 따라서 로그인 상태를 유지하기 위해서는 추가적인 방법이 필요하다.

로그인 상태를 유지하기 위한 방법 중 하나인 쿠키 세션 방식을 알아보자.

그 외에, 사용자 분석과 광고, 개인화 등을 위해 쓰이기도 한다.

쿠키

클라이언트가 로그인 인증(Authorization)을 서버로 보내면, 서버는 쿠키가 있는지 확인하고, 없다면 쿠키를 생성해서 응답 요청에 담아서 보낸다.

응답 요청에서 쿠키를 받은 클라이언트는 브라우저의 쿠키 저장소에 쿠키를 저장하고, 다음 요청 때마다 쿠키를 같이 보낸다.

그러면 서버는 요청 헤더에 있는 쿠키를 보고 서버 내부에 있는 쿠키와 일치하는게 있으면 해당 사용자로 인식하게 된다. 

쿠키는 4KB이하의 String으로 이루어져 있다.

쿠키의 적용을 받는 경로, 유효기간 등을 정할 수 있다.

세션

로그인 상태 유지를 쿠키로 하고, 사용자의 아이디와 비밀번호를 쿠키에 저장한다면, 쿠키가 유출될 경우 다른 사용자가 쿠키를 사용해서 로그인 할 수도 있다.

세션은 이런 쿠키의 취약점을 보완할 수 있다.

세션은 비밀번호 같은 인증정보를 서버쪽에 저장한다. 그리고 클라이언트에게 주는 쿠키에는 사용자를 식별할 수 있는 세션 ID를 저장한다.

클라이언트는 세션 ID를 요청에 같이 보내고, 서버는 세션 ID를 통해 인증된 사용자인지 판별한다.

서버 쪽에는 유저 이름, 만료기한 등의 정보가 저장된다.

세션은 쿠키를 사용하지만, 사용자의 정보를 브라우저가 아닌 서버에서 관리한다. 클라이언트 쪽에서 관리하는 것 보다는 보안상 유리하지만, 세션을 사용자 수만큼 생성하므로, 사용자가 많아질수록 서버에 부하가 크다.

세션은 timeout이 되거나, 로그아웃하면 서버에서 삭제된다.

'CS > 네트워크' 카테고리의 다른 글

SSL/TLS란? SNI, Intermediate-Chain  (1) 2023.10.22
HTTP 버전  (0) 2023.10.22
HTTP의 Stateless  (0) 2021.12.26
네트워크의 구성요소  (0) 2021.07.19
컴퓨터 네트워크 첫 걸음  (0) 2021.07.19

+ Recent posts