개발공부 & Network & OS

[Web] 쿠키(Cookie)와 세션(Session)

판교너굴맨 2022. 2. 9. 02:39

1. 쿠키와 세션을 사용하는 이유

쿠키와 세션은 HTTP의 특징이자 약점을 보안하기 위해 사용된다.

HTTP 프로토콜은 Connectionless 및 Stateless의 특징을 가진다.

1. Connectionless

  • 클라이언트가 서버에 요청(Request)를 보낸 후 응답(Response)을 받으면 그 연결을 끊어버리는 특징이다.
  • HTTP 1.1 버전에서는 헤더에 keep-alive 값을 줘서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다. 아래 이미지는 유효 연결이 열려 있어야 하는 최소한의 단위이다. 시간이 지나면 연결을 끊는다.

2. Stateless

  • 통신 연결이 끝나면 상태 정보를 유지하지 않는 특징이다.

예를들어 쿠키와 세션을 사용하지 않고 어떤 페이지에 로그인을 했음에도, 상태 정보가 남아 있지 않아 페이지를 이동할 때마다 계속 로그인을 해야 서비스를 이용할 수 있다. 

그렇기 때문에 쿠키와 세션을 이용해 상태 정보를 유지할 수 있다.

 

2. 쿠키 (Cookie)

쿠키란?

쿠키란 클라이언트 (브라우저) 로컬에 저장되는 키와 값이 들어 있는 작은 데이터 파일이다.

브라우저가 종료되어도 설정한 시간이 지나지 않으면 데이터가 삭제되지 않음.

 

쿠키의 사용 예

토큰 저장,

자동 로그인,

팝업창에서 '오늘 더이상 이 창을 보지 않음' 등의 메세지

3. 세션 (Session)

세션이란?

일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술이다.

여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.

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

 

세션의 동작 방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
  2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
  3. 클라리언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
  4. 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라언트 정보를 가져와서 사용
  5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답

세션의 사용 예

로그인과 같은 보안상 중요한 작업을 수행할 때 사용한다. 데이터를 서버측에서 관리하기 때문에 보안에 용이하다.

4. 세션과 쿠키의 차이

  쿠키 (Cookie) 세션 (Session)
저장 위치 클라이언트 (사용자 브라우저) 웹서버
저장 형식 text Object
만료 시점 브라우저가 종료되어도 만료시점이 지나지 않으면 삭제되지 않음. 브라우저 종료시 삭제
(기간 지정 가능)
사용하는 자원(리소스) 클라이언트 리로스 웹서버 리소스
용량 제한 총 300개
하나의 도메인당 20개
하나의 쿠키당 4KB
서버가 허용하는 만큼
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋음

5. 세션을 사용하지 않고 쿠키를 사용하는 이유

세션은 사용자(브라우저)마다 데이터가 서버에 저장되고, 서버 자원을 사용하기 때문에 사용자가 많을수록 서버의 성능이 낮아질 수 있다. 

 

참고자료

https://interconnection.tistory.com/74

 

쿠키와 세션 개념

개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정리해보려고 합니

interconnection.tistory.com

https://hahahoho5915.tistory.com/32

 

쿠키(Cookie), 세션(Session) 특징 및 차이

개요  > 쿠키(Cookie), 세션(Session) 각각 특성 및 차이 확실히 분류하기 메모 1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것(?) 2. 차이점 : 저장위치, 저

hahahoho5915.tistory.com