쿠키, 세션

이정훈·2023년 8월 3일
0

Computer Science

목록 보기
2/9

1. HTTP

  • HTTP 프로토콜은 인터넷 상에서 데이터(웹 문서를 주고받기 위한, TCP/IP 통신 위에서 메세지를 주고 받기 위해 사용되는 프로토콜(통신 규약)이다.
  • 클라이언트-서버 프로토콜이라고도 한다.

2. HTTP 특성

1. Connectionless
- 클라이언트에서 서버로 요청을 보내면, 응답 후 연결을 끊는다.
- 최소한의 자원으로 서버를 유지할 수 있다.
- 연결을 유지하지 않음으로써, 서버의 자원을 효율적으로 사용하고, 더 많은 클라이언트의 요청에 대응할 수 있음
- Http 1.1부터는 keep-alive 옵션으로, 연결을 유지할 수 있다.
2. Stateless
- 클라이언트의 상태 정보를 가지지 않는다.
- 즉, 이전 통신에서의 데이터를 유지하지 않는다.

3. 쿠키, 세션

  • 위와 같은 HTTP특성으로 인해, 서버는 클라이언트의 상태를 알 수 없다. 하지만 인터넷을 사용하다 보면
    서버는 사용자의 정보(ex 로그인)을 알고 있어야 하는 경우도 존재한다.
    예를 들어 FaceBook에 접속하여 로그인을 하였다고 가정하자
  • 서버는 브라우저에게 받은 정보를 바탕으로, 해당 유저의 프로필을 브라우저에게 제공한다.
  • 서버는 Stateless하기 때문에, 브라우저(클라이언트)를 식별할 수 없다. 따라서 브라우저는 다시 로그인을 하여아 한다.
  • 다음과 같은 단점(Stateless의 단점)을 극복하기 위해 쿠키, 세션, 토큰 등을 이용한다.

4. 쿠키(Cookie)

  • 쿠키란 인터넷 사용자가 특정 웹 사이트를 방문했을 경우, 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각을 의미한다. 브라우저는 쿠키를 로컬에 저장하고, 동일 서버에 재 요청시, 저장된 데이터를 함께 전송한다.
  • 쿠키는 Key-Value의 형태이다.
  • 서버와 브라우저는 HTTP 메세지에 쿠키를 담아서 주고받게 된다.

4-1. 특징

  1. 도메인당 20개까지 제한되며, 하나의 쿠키는 4KB이다.
  2. 클라이언트는 총 300개의 쿠키를 저장할 수 있다.
  3. 유효 시간을 명시할 수 있고, 유효 시간이 정해진다면 브라우저가 종료되어도 인증이 유지될 수 있다.
  4. 클라이언트에 저장하기 때문에 삭제 및 변조가 가능 -> 민감한 정보는 저장하면 안됨
  5. 매번 HTTP 헤더에 쿠키를 포함해야 하기 때문에, 정보가 많다면 오버헤드가 발생할 수 있음
    오버헤드: 추가적인 처리 시간 또는 자원을 의미

4-2. 사용

  1. 세션관리 : 로그인, 쇼핑몰 장바구니 정보 등
  2. 개인화: 사용자의 테마 세팅
  3. 트래킹: 사용자의 온라인 활동을 추적, 맞춤형 광고

4-3. 종류

1.Session Cookie : 현재 세션이 끝날 때(브라우저 종료 시) 삭제, 사용자 하드드라이브에 저장되지 않음
2.Persistent Cookie : 만료 시점이 설정된 쿠키, 사용자의 하드 드라이브에 저장됨.

5. 세션

  • 세션은 쿠키와 달리, 사용자의 상태 정보가 서버에 저장되는 인증 방식이다. 서버는 요청한 브라우저에게 session_id의 값을 쿠키에 담아 브라우저에게 전송하게 된다. 클라이언트는 재 방문시, session_id를 담은 쿠키를 서버에 전송하게 되고, 서버는 session_id를 기반으로 사용자에게 응답한다.

5-1. 특징

  1. 저장위치는 서버이다.
  2. 브라우저가 종료되면 세션은 삭제된다.
  3. 서버에 저장되기 때문에 안전하다.
  4. 쿠키보다 느림

참고사항 출처

https://medium.com/@maheshlsingh8412/cookie-session-story-of-a-stateless-http-3cd09cc01541
https://www.researchgate.net/figure/Cookie-based-User-Authentication_fig1_314289445
https://www.kaspersky.com/resource-center/definitions/cookies
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies

profile
원숭이도 이해할 수 있는 글을 쓰도록 하자

0개의 댓글