프로그래밍 정보공유

세션과 쿠키/Session and Cookie

student513 2021. 3. 30. 22:44

세션과 쿠키가 필요한 이유는?

HTTP의 두 가지 특징때문에 세션과 쿠키가 필요합니다.

Connectionless(비 연결지향)

클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성이 있습니다.

Stateless(상태정보유지안함)

HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없습니다. 이를 Stateless하다고 합니다.

이러한 상태에서는 통신할 때마다 스스로를 인증해야합니다. 웹사이트 내에서 이동할 때마다 로그인을 새로해야하는거죠. HTTP 프로토콜에서 로그인을 유지한 채로 웹 서비스를 제공하기 위해 쿠키와 세션을 이용합니다.

Session

세션이란 브라우저를 통해 웹서버에 접속한 시점부터 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술입니다.

즉, 방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라고 칭합니다.

동작방식

  1. 클라이언트가 서버에 로그인 요청을 합니다
  2. 서버는 클라이언트의 로그인 요청의 유효성을 확인하고(아이디와 비밀번호 검사) unique한 id를 sessionid라는 이름으로 저장합니다.
  3. 서버가 응답할 때 응답헤더에 set-cookie: sessionid:a1x2fjz를 추가하여 응답합니다.
  4. 클라이언트는 이후 서버에 요청할 때 전달받은 sessionid:a1x2fjz쿠키를 자동으로 요청헤더에 추가하여 요청합니다.
  5. 서버에서는 요청헤더의 sessionid 값을 저장된 세션저장소에서 찾아보고 유효한지 확인후 요청을 처리하고 응답합니다.
  6. 만약 클라이언트로 부터 발송된  sessionid 가 없다면, 서버는  sessionid 를 생성해 클라이언트에게 발행(응답)합니다.

세션의 내용은 서버에 저장되기 때문에 계속하여 늘어날 경우 서버에 부하가 발생합니다.

Cookie

쿠키는 클라이언트 로컬에 저장되는 Key-Value쌍의 작은 데이터 파일입니다. 특정 웹 사이트를 방문 했을 때 만들어집니다.

쿠키는 이름, 쿠키 만료날짜, 경로정보 등이 담겨있어 쿠키가 만료될 때까지 특정 상태를 유지할 수 있습니다.

  • 팝업창의 "하루동안 이 창을 보지 않음"
  • 쇼핑몰의 장바구니

동작방식

  1. 클라이언트가 서버에 로그인 요청을 합니다
  2. 서버는 클라이언트의 로그인 요청의 유효성을 확인하고(아이디와 비밀번호 검사) 응답헤더에 set-cookie: user=chrisjune 를 추가하여 응답합니다.
  3. 클라이언트는 이후 서버에 요청할 때 전달받은 cookie: user=chrisjune쿠키를 자동으로 요청헤더에 추가하여 요청합니다. 헤더에 쿠키값을 자동으로 추가하여 주는데 이는 브라우저에서 처리해주는 작업입니다.

비교

저장위치

  • 쿠키는 로컬(방문자의 컴퓨터 메모리)에 저장됩니다.
  • 세션은 웹 서비스가 돌아가는 서버에 저장됩니다.

보안

  • 쿠키는 클라이언트측에서 수정이 가능하기 때문에 탈취와 변조의 위험이 있습니다.
  • 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전합니다. 로그인 유지에 사용합니다.

Lifecycle

  • 쿠키는 브라우저를 종료해도 파일로 남아있습니다.
  • 세션은 브라우저 종료시 세션을 삭제합니다

속도

  • 쿠키는 파일에서 읽기 때문에 상대적으로 빠릅니다
  • 세션은 요청마다 서버에서 처리를 해야하기 때문에 비교적 느립니다.

출처

 

쿠키와 세션이란

쿠키와 세션에 대한 개념을 정리 하도록 하겠습니다. 쿠키와 세션이란? 쿠키와 세션은 http 프로토콜의 약점을 커버하기 위해서 존재합니다. http 프로토콜은 Connectionless하고 Stateless하다라고 이야

juyoung-1008.tistory.com

 

 

Session 이란?

전에 포스팅한 글 중에 PHP에서 사용하는 $_SESSION 을 사용하는 방법에 대해 설명하다 세션의 개념을 간단하게 쓴적이 있다. 사실 그때는 세션이란게 이런거구나 라고 이해하고 이정도면 되겠지라

88240.tistory.com

 

 

[WEB] 쿠키, 세션이란?

웹의 기초중 하나인 쿠키와 세션에 대해 알아봅니다.

chrisjune-13837.medium.com