Cookie , Session 의 차이점

yo_onms·2022년 5월 29일
0

CS

목록 보기
1/3
post-thumbnail

최근 로그인 관련 기능을 구현 하다가 Cookie와 Session에 차이점을 잘 모른다고 생각하여 공부하게 되었습니다.

쿠키, 세션, 웹 스토리지를 설명하기에 앞서 사용 이유를 쉽게 이해하기 위해 HTTP 프로토콜의 특징을 알아보자!

1. HTTP 프로토콜란?

-비연결지향(Connectionless)

HTTP는 클라이언트가 요청(Request)을 서버에 보내고, 서버는 클라이언트에게 적절한 응답(Response)을 주고 연결(Connection)을 끊는 특성이 있다.

-상태없음(Stateless)

커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.


HTTP는 이 두가지 특성을 보완하기 위해서 쿠키, 세션, 웹 스토리지를 사용하게 되었다.

2. 쿠키(Cookie)

쿠키는 클라이언트 로컬에 저장되는 키와 값 형태의 작은 파일로 이름,값,만료시간,경로정보등이 들어있습니다.

쿠키는 주로 세가지 목적을 위해 사용됩니다.

  • 세션관리 : 서버에 저장해야할 로그인, 장바구니 등의 정보 관리
  • 사용자 맞춤: 사용자가 선호하는 옵션이나 테마 등의 세팅
  • 사용자 추적: 사용자의 행동을 기록하고 분석하는 용도

쿠키는 2가지로 나뉘는데 바로 세션 쿠키지속 쿠키로 나뉜다.
만료 날짜/시간을 지정하지 않으면, '메모리에 있는 동안' 계속 유효하다고 판단하도록 세션 쿠키에 저장되고, 만료 날짜/시간을 지정하면 프로세스가 종료되더라도(메모리에서 사라지더라도) 특정 만료날짜/시간까지 유효하므로 지속 쿠키에 저장된다.
쉽게말해

세션 쿠키는 브라우저 메모리에 저장되므로 브라우저가 종료되면 쿠키는 사라지게 된다.
지속 쿠키는 파일로 저장되므로 브라우저가 종료되어도 쿠키는 남아있게 된다.

쿠키 프로세스

  • 브라우저에서 웹페이지 접속
  • 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트의 로컬(하드)에 저장
  • 클라이언트가 재요청시 웹페이지 요청과 함꼐 쿠키값도 전송
  • 지속적으로 로그인 정보를 가지고 있는것처럼 사용

쿠키의 한계

  • 300개까지 만 저장가능, 하나의 도메인에 20개의 값만 보유가능, 하나의 쿠키값은 4KB까지만 저장
  • 사용자의 요청없이도 브라우저가 request시에 request header을 넣어 자동으로 서버에 전달

3. 세션(Session)

세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
일정 시간동안 같은 브라우저로 부터 들어오는 요구를 하나의 상태로 보고 그 상태를 유지하는 것

다시말해 웹 브라우저를 통해 웹서버에 접속한 이후부터 그 브라우저를 종료 할떄까지 상태 유지

클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID를 부여합니다

세션은 주로 이렇게 사용됩니다.

  • 세션사용 : 로그인 정보유지

세션 프로세스

  • 클라이언트는 서버접속시 세션 ID를 발급
  • 클라이언트는 세션ID에 대해 쿠키를 사용해서 저장
  • 서버요청시에 이 쿠키의 세션ID를 서버에 전달하여 사용
  • 서버는 받은 세션ID로 세션의 클라이언트정보를 가져오고 서버요청을 처리하여 클라이언트에게 응답

4. 쿠키과 세션의 차이

저장위치

  • 쿠키 : 클라이언트에 파일로 저장
  • 세션 : 서버에 저장

보안

  • 쿠키 : 클라이언트 로컬에 저장되기 떄문에 변질되거나 request에서 스나이핑당할 우려가 있 어서 보안 취약
  • 세션 : 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 떄문에 비 교적 안전 (보안 면에서 쿠키보다 우수)

라이프 사이클

  • 쿠키 : 지속쿠키에 경우 브라우저를 종료하더라도 저장 될수 있음
  • 세션 : 만료기간을 정할수 있지만 브라우저 종료시 세션아이디 삭제될수 있음

속도

  • 쿠키 : 쿠키에 정보가 있기 떄문에 서버에 요청시 속도가 빠름
  • 세션 : 정보가 서버에 있기 떄문에 처리가 요구되어 비교적으로 느림

5. 그럼 굳이 쿠키를 사용하는 이유

세션은 서버에 데이터를 저장 즉, 서버의 자원을 사용하기 때문에 서버 자원에 한계가 있고 메모리를 사용하다보면 속도 저하도 올 수 있기 때문이다.

Reference

-쿠키-세션-그리고-웹-스토리지
-Web - 쿠키와 세션의 차이, 용도, 사용법(cookie,session)
-기술-쿠키와-세션의-차이

느낀점

이제까지 쿠키와 세션에 대해 잘 모른체 마구잡이로 사용하였는데 보안과 속도 적인 측면을 생각하면 코딩하는 사람이 되도록 하여야 겠다!!

profile
프론트엔드 주니어 개발자

0개의 댓글