logo

JEONGGON

    블로그
github
mode
목 차
down-arrow

CS 쿠키, 세션

2023.01.26.

post-thumbnail

Cookie & Session

1. 쿠키와 세션의 배경

  • 쿠키와 세션은 HTTP의 특징이자 약점인 비연결성, 무상태 프로토콜을 보완하여 사용자의 정보를 지속적으로 확인하기 위해 사용함

  • ex) 로그인 정보, 상품 장바구니 품목, 사용자 맞춤 테마 등등..

  • 비연결성(connectionless) : 서버가 요청에 맞는 응답을 전송한 후, 연결을 끊음

  • 무상태 프로토콜(stateless) : 서버가 클라이언트의 상태를 보존하지 않음



2. 쿠키(Cookie)

  • 사용자가 웹페이지를 방문할 경우, 사이트를 운용하는 서버에서 사용자의 컴퓨터에 저장하는 정보파일로, 필요시 정보를 참조하거나 재사용 할 수 있음
  • 사용자가 접속시 쿠키가 없다면, 처음 방문한 것으로 인식하고, 고유한 식별자를 생성함

2-1. 쿠키 특징

  • 이름, 값, 만료일(expire, max-age), 경로정보 등으로 구성된다.(Key-Value 데이터 형식)
  • 클라이언트에 총 3000개의 쿠키를 저장할 수 있음
  • 하나의 도메인 당 50개의 쿠키를 가질 수 있음
  • 하나의 쿠키는 4KB(=4096byte)까지 저장 가능

자료 발췌

o  At least 4096 bytes per cookie (as measured by the sum of the length of the cookie's name, value, and attributes).

o  At least 50 cookies per domain.

o  At least 3000 cookies total.

출처 : RFC(Request for Comments: 인터넷에서 기술을 구현하는데 필요한 절차를 제공하는 공문서 간행물) 6265 - 6.1. Limits


2-2. 쿠키동작 순서

  1. 클라이언트가 웹페이지 요청(=사용자가 웹페이지에 접속)
  2. 서버는 쿠키를 생성
  3. 생성한 쿠키와 함께 http화면을 응답
  4. 응답받은 쿠키는 사용자의 로컬 PC에 저장
  5. 클라이언트는 서버에 다른 요청을 보낼 때, 쿠키를 함께 전송


3. 세션(Session)

  • 일정시간 동안 동일한 사용자로부터 들어오는 요청을 하나의 상태로 보고, 그 상태를 유지시키는 기술
  • 일정시간은 서버에 접속한 시점부터 브라우저를 종료하여 연결이 끝나는 시점까지를 의미함
  • 사용자가 접속한 상태를 하나의 단위로 보고 그것을 세션이라고 함

3-1. 세션 특징

  • 서버에 상태유지를 위한 정보(세션 쿠키)를 저장한다.
  • 브라우저를 닫거나 서버를 삭제할 때 삭제되므로 쿠키보다 보안이 우수함
  • 서버용량이 허용하는 기준에서 저장 데이터의 제한이 없음
  • 각 클라이언트에 고유 Session ID를 부여하고 Session ID로 클라이언트를 구분하여 맞는 서비스를 제공

3-2. 세션동작 순서

  1. 클라이언트가 웹페이지 요청(=사용자가 웹페이지에 접속)
  2. 서버는 클라이언트의 Request-Header 필드인 쿠키를 확인하여, Session ID를 보냈는지 확인
  3. 존재하지 않으면, 서버는 Session ID를 생성하여, 클라이언트에게 응답
  4. 서버는 Session ID를 쿠키를 사용하여 서버에 저장
  5. 클라이언트의 재접속시, 쿠키를 이용하여, Session ID값과 함께 서버에 요청


4. 쿠키와 세션의 차이

  • 둘 다 비슷한 역할을 수행, 동작원리도 비슷함.(=세션도 결국 쿠키를 사용)
  • 쿠키는 서버를 전혀 사용하지 않으며, 세션은 서버를 활용하는 것이 큰 차이점
  • 세션이 보안이 더 우수함
  • 쿠키는 정보가 로컬에 저장되기에 변형될 수 있거나, 정보를 스니핑(탈취) 당할 우려가 있음
  • 세션은 Session ID만 저장하고 처리는 서버에서 일어나며, 브라우저 종료시, 삭제됨으로 보안성이 높음
  • 속도는 쿠키가 우수함
  • 쿠키에 정보가 담겨 있어 요청시, 속도가 빠름
  • 세션은 정보가 서버에 있기에 처리가 필요하여 속도가 느림
  • 쿠키와 세션 둘 다 각각 보안, 속도의 장단점이 있기 때문에 병행하여 사용


5. 쿠키 & 세션 활용 로그인 과정

5-1. 쿠키에서 로그인과정

  • 쿠키는 로컬에 정보가 저장되어있으며 로그인시, 쿠키정보를 요청에 담아 보내고 서버의 쿠키값을 확인하여 로그인되고 따라서 재접속하더라도 계속 로그인 상태를 유지함

5-2. 세션에서 로그인과정

  • 세션은 정보는 서버에 있고, 서버에서 발급한 Session ID만 가지고 있으며, 로그인시, 세션은 Session ID를 요청에 담아 보내고, 서버에서 처리하여 정보를 보내준다. 따라서 브라우저를 종료하면, 해당 Session ID는 삭제됨

5-3. 쿠키와 세션 혼용

  • 일반 로그인의 경우, 세션을 이용해 보안성을 높이고 / 로그인 유지의 경우, 쿠키를 사용해 계속해서 정보를 가지고 있으며, 로그인의 속도를 높임
cscookiesession
profile

조정곤

주니어 프론트엔드 개발자

github
linkedin
instagram
email

< 이전글

CS REST API

다음글 >

파이썬 클래스

Computer_science 포스트 (10)

down-arrow
CS CLICS Request PUT, PATCHCS REST APICS 쿠키, 세션CS 서버CS 컴퓨터 구조CS OAuthCS JWTCS CPUCS Memory