세션(Session)

구황작물·2022년 7월 21일
0

Security

목록 보기
9/10

세션

세션 : 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화, 송수신 연결상태를 의미하는 보안적인 다이얼로그 및 시간대를 의미한다. (위키피디아 일부 발췌)

HTTP는 무상태성(stateless)이라는 특성을 가지고 있다. 만약 쿠키와 세션이 존재하지 않으면 서버는 클라이언트를 매번 확인해야 한다. 이 특성을 보완 하기 위해 쿠키와 세션을 사용한다.

세션이란?

세션은 쿠키를 기반으로 하고 있으나 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리 한다.

  • 서버에선는 클라이언트를 구분하기 위해 세션 ID를 부여하여 웹 브라우저를 종료할 때 까지 인증상태를 유지한다.

세션 동작 방식

  1. 로그인 성공시 서버는 해당 유저가 인증에 성공 했다고 판단한다.

  2. 서버는 해당 유저에 대한 세션을 저장소(주로 인메모리 또는 세션 스토어)에 저장한다.

  3. 세션 성공을 증명할 수단으로 서버에서 클라이언트로 세션 아이디를 발급한다.

이때 웹 사이트에서 로그인을 유지하기 위한 수단으로 쿠키를 사용하고, 쿠키에선는 서버에서 발급한 세션 아이디를 저정한다.

  1. 유저가 인증이 필요한 웹서비스를 사용할 때마다 서버는 쿠키에 저장된 세션 아이디를 확인하여 접근을 허용하게 해준다.

로그아웃

set-cookie로 클라이언트에게 쿠키 전송시 세션 아이디의 키값을 무효한 값으로 갱신시킨다.

주의점

세션 아이디가 쿠키에 저장되는 만큼 세션은 쿠키의 단점을 고스란히 가지고 있다. 쿠키는 오래 유지 될 수 있고 JS로 접근하여 악용할 수 있다.

profile
그냥 개발 좋아하는 덩이뿌리식물

0개의 댓글

관련 채용 정보