Computer Science/Network

[Web] Cookie와 Session

2024. 10. 7. 23:05
목차
  1. HTTP (HyperText Transfer Protocol) 이란?
  2. Cookie 란?
  3. Session 이란?

HTTP (HyperText Transfer Protocol) 이란?


지난 글에 웹에서 클라이언트와 서버가 통신하기 위해 HTTP 라는 통신규약을 사용한다는 것을 알려드렸습니다.

그러면 쿠키와 세션은 어떨 때 필요한 정보일까요?

HTTP 에서 아래와 같이 두 가지 큰 특징이 있습니다.

  • 비연결성(connectionless): 하나의 요청에 하나의 응답을 한 후, 둘 사이에 연결을 끊는 것
  • 무상태성(stateless): 통신이 끝난 후 상태 정보를 저장하지 않는 것

이 때문에 서버는 요청을 보낸 클라이언트가 누구인지 식별할 수 없습니다.

 

예를 들자면, admin 이라는 사용자로 로그인을 완료했을 때, 클라이언트가 서버에 특정 요청을 할 때마다 자신의 아이디를 말하지 않는 이상 서버는 클라이언트가 어떤 사용자인지 특정할 수 없습니다.

그래서 필요한 것이 cookie(쿠키) 입니다.

Cookie 란?


쿠키는 서버가 클라이언트에게 발급하는 일종의 정보입니다. 쿠키는 Key 와 Value 로 이루어져 있으며, 해당 쿠키를 발급받은 클라이언트는 서버에게 요청을 전송할 때 해당 쿠키도 같이 전송합니다.

그렇기에 쿠키는 보통 클라이언트의 정보 기록이나 상태 정보를 표현하는 용도로 사용합니다.

 

예를 들어, admin 이라는 사용자로 로그인을 완료했을 때, 서버는 클라이언트에게 "userid=admin" 이라는 쿠키를 발급하고, 다시 클라이언트가 서버에게 일정한 동작을 요청했을 때, "userid=admin" 이라는 쿠키 정보와 함께 전송하면 서버는 클라이언트가 admin임을 확인하고 해당 사용자에 알맞은 페이지로 응답할 수 있습니다.

쿠키 변조

하지만, 악의를 가진 사용자가 로그인을 하지 않고서 서버에게 "userid=admin"이라는 쿠키 정보와 함께 admin 사용자의 민감 데이터를 요청하게 된다면 어떻게 될까요? 누구나 다른 사람의 아이디를 도용하여 민감 정보를 탈취할 수 있겠죠?

그래서 존재하는 것이 바로 session(세션) 입니다.

 

Session 이란?


쿠키는 인증 상태를 클라이언트에게 저장하는 것이 였다면,

세션은 인증 정보를 클라이언트가 아닌 서버에 저장하고, 해당 정보에 접근이 가능한 랜덤한 문자열(Key)을 클라이언트의 쿠키에 저장하는 방식으로 작동합니다. 그래서 우리는 이 Key를 SessionID 라고 부르고, 브라우저는 서버와 HTTP 통신을 할 때마다 해당 키와 함께 요청하여, 서버가 해당 키에 해당하는 데이터와 인증 상태를 확인하여 응답합니다.

저작자표시 비영리 변경금지 (새창열림)
  1. HTTP (HyperText Transfer Protocol) 이란?
  2. Cookie 란?
  3. Session 이란?
'Computer Science/Network' 카테고리의 다른 글
  • [Web] 웹 브라우저와 개발자 도구 사용법
  • [데이터통신] OSI 참조 모델: 애플리케이션 계층
agor
agor
agor
Steady Study
agor
전체
오늘
어제
  • Category (61)
    • Language (5)
      • C (1)
      • Java (1)
      • PHP (3)
    • DB (1)
      • MySQL (1)
    • Library (2)
      • React (2)
    • Framework (1)
      • SpringBoot (1)
    • Coding Test (13)
      • C (3)
      • Python (10)
    • Computer Science (6)
      • Computer Architecture (3)
      • Network (3)
    • OS (7)
      • Linux (7)
    • InfoSec (23)
      • Pawnable (3)
      • Reversing (8)
      • Wargame (11)
      • Web (1)
    • Cloud (1)
      • AWS (1)

블로그 메뉴

  • 📖Guestbook
  • 🖥️GitHub
  • ✏️Post
  • ⚙️Manager

공지사항

인기 글

태그

  • 티스토리챌린지
  • 오블완

최근 댓글

최근 글

hELLO · Designed By 정상우.
agor
[Web] Cookie와 Session
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.