TIL) Cookie & Session

Jiwon Lee·2022년 9월 21일
1

TIL

목록 보기
17/19

웹 환경에서 사용자와 시스템 사이에 데이터를 교환하기 위해서 HTTP 방식을 이용한다. HTTP통신은 요청과 응답에 의해 동작한다. 가장 큰 특징은 Stateless인데, 과거의 통신에 대한 내용을 알지 못한다는 의미이다. 따라서 매 통신 때 마다 필요한 모든 정보를 담아서 요청을 보내야하는 수고로움이 동반된다.
이러한 불편함을 타개하고자 일부 정보에 대해서 Stateful 상태를 유지할 필요성이 생기게 되는 것이다. 이를 위해 Session과 Cookie (또는 Token과) 같은 기술을 사용할 수 있다.

Cookie란?

Cookie는 클라이언트의 컴퓨터에 저장되는 데이터 파일이다. Cookie에는 이름, 값, 만료 날짜/ 시간(저장기간), 도메인, 경로 정보 등으로 구성이 되어있다. Cookie는 하나의 도메인 당 20개를 가질 수 있으며, 1개 당 4Kbyte를 넘길 수 없다.

서버에서는 HTTP Response Header에 Set-Cookie 속성을 이용하여 클라이언트에 Cookie를 제공하여 저장하게 하고, 클라이언트는 HTTP Request에 저장된 Cookie를 함께 전달하여 이전의 통신에서 사용된 정보들을 파악할 수 있다.

또한, Cookie를 통해 사용자별로 다른 정보를 표시하는 것이 가능하고, 사용자의 행동과 패턴을 분석할 수 있기 때문에 최근 들어서 더욱 중요한 개념이 되었다.

쿠키 사용의 예

  • 방문 사이트에서 로그인 시, [아이디와 비밀번호를 저장하시겠습니까?]
  • 쇼핑몰의 장바구니 기능
  • 자동로그인, 팝업에서 [오늘 더 이상 이 창을 보지 않음] 기능 등

Session이란?

Session은 쿠키를 기반으로 하지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와는 다르게 서버측에서 관리한다.

동일한 클라이언트가 브라우저를 통해 웹 서버에 접속한 시점으로부터 브라우저를 종료하여 연결을 끝낼 때 까지 들어오는 일련의 Request를 하나의 상태로 보고, 그 상태를 일정하게 유지하여 클라이언트와 웹 서버가 논리적으로 연결된 상태를 뜻한다.

사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안 면에서는 우수하나, 사용자가 많아질 수록 서버 메모리를 많이 차지하므로, 서버에 과부하를 주게되어 성능 저하의 요인이 된다.

  • 서버는 Session에 대한 정보를 저장하고 클라이언트에게는 Session을 구분할 수 있는 ID를 부여하는데, 이것을 Session ID라고 한다.
    클라이언트 Request를 보낼 때 해당 Session ID를 함께 보냄으로써, 클라이언트의 상태를 확인할 수 있다.

세션 사용의 예

  • 로그인 같이 보안상 중요한 작업을 수행할 시

[Cookie와 Session을 이용한 인증 Flow]

0개의 댓글