Cookie vs Session

2020. 9. 9. 12:35· Common/Web
목차
  1. HTTP의 특징
  2. Connectionless(비연결지향)
  3. Stateless(무상태)
  4. 쿠키(Cookie)
  5. 구성 요소
  6. 동작방식
  7. 세션(Session)
  8. 동작 방식
  9. Cookie와 Session의 차이점
  10. 저장위치
  11. 보안
  12. Lifecycle
  13. 속도
  14. 참고자료
728x90

Cookie vs Session

HTTP의 특징

Connectionless(비연결지향)

  • Client에서 Server에 Request를 보내면 Server는 Client에 Response를 하고, 접속을 끊음

Stateless(무상태)

  • 비연결지향(Connectionless)로 인해 Client의 상태정보에 대해 알 수 없음

쿠키(Cookie)

  • Client Local에 저장되는 Key-Value쌍의 작은 데이터 파일

구성 요소

  • 이름, 값, 만료시간, 전송할 도메인명, 전송할 경로, 보안연결여부, HttpOnly여부

    • HttpOnly : 서버로 http Request 요성시에만 cookie를 전송, 스크립트 언어로 브라우저의 cookie를 호출했을때 브라우저가 응답하지 않음

동작방식

cookie-vs-session-1

  1. Clinet가 Server에 Login Request를 함

  2. Server는 Clinet의 Login Request의 유효성을 확인(아아디, 패스워드 검사)

  3. 응답헤더에 set-cookie를 추가하여 응답

  4. Clinet는 이후 Server에 Request할때 전달받은 쿠키를 자동으로 요청헤더에 추가하여 요청, 헤더에 쿠키값을 자동으로 추가하여 주는데 이는 브라우저에서 처리

    • 쿠키의 기한이 정해져 있기 않고 명시적으로 지우지 않는다면 반 영구적으로 남아있음
  5. 쿠키값 확인 방법

    • 브라우저 개발자 도구의 네트워크(가독성이 떨어지고, 수정 불가)

    • 브라우저의 쿠키관리 탭, 쿠키관리 플러그인(쉽게 수정 가능)

    • 쿠키는 Clinet에서 수정할 수 있기 때문에 위변조 위험이 항상 존재

    • 또한 쿠키값은 클라이언트가 확인할 수 있기 때문에 암호화하는 것이 좋다.

세션(Session)

  • 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술

동작 방식

cookie-vs-session-2

  1. Clinet가 Server에 Login Request 함.

  2. Server는 Clinet의 Login Request의 유효성 확인(아이디, 패스워드 검사)

  3. unique한 아이디를 sessionid라는 이름으로 저장

  4. 서버가 응답할떄 응답헤더에 set-cookie : sessionid : id 를 추가하여 응답

  5. 클라이언트는 이후 서버에 요청할때 전달받은 sessionid쿠키를 자동으로 요청헤더에 추가하여 요청

  6. Server에서는 요청헤더의 sessionid 값을 저장된 세션저장소에서 찾아보고 유효한지 확인후 요청을 처리하고 응답

    • 세션 내용은 서버에 저장되기 때문에 늘어날 경우 서버 과부하 발생

Cookie와 Session의 차이점

저장위치

  • Cookie는 로컬에, Session은 로컬, 서버에 저장

보안

  • 쿠키는 탈취, 변조 가능 그러나 세션은 id값만 가지고 있으며, 서버에도 저장되어 있어 상대적으로 안전

Lifecycle

  • 쿠키는 브라우저를 종료해도 파일이 남지만, 세션은 브라우저 종료시 삭제

속도

  • 쿠키는 파일에서 읽어 오기 때문에 상대적으로 빠르지만, 세션은 요청마다 서버에서 처리해야 하므로 비교적 느림

참고자료

cookie-and-session

728x90
728x90
저작자표시 비영리 (새창열림)

'Common > Web' 카테고리의 다른 글

HTTP Status  (0) 2020.10.18
HTTP Method  (0) 2020.10.16
HTTPS란?  (0) 2020.10.15
OAuth2 인증방식 종류들  (0) 2020.09.23
Cookie vs WebStorage  (0) 2020.08.19
  1. HTTP의 특징
  2. Connectionless(비연결지향)
  3. Stateless(무상태)
  4. 쿠키(Cookie)
  5. 구성 요소
  6. 동작방식
  7. 세션(Session)
  8. 동작 방식
  9. Cookie와 Session의 차이점
  10. 저장위치
  11. 보안
  12. Lifecycle
  13. 속도
  14. 참고자료
'Common/Web' 카테고리의 다른 글
  • HTTP Method
  • HTTPS란?
  • OAuth2 인증방식 종류들
  • Cookie vs WebStorage
Seyun(Marco)
Seyun(Marco)
개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :) 과제를 제공해주고 피드백을 주는 서비스를 오픈하였습니다. 관심있으신 분들은 https://jobskill.notion.site/ 해당 사이트를 참고해주세요.
250x250
Seyun(Marco)
Enthusiastically, Steady, Slowly
Seyun(Marco)
전체
오늘
어제
  • 분류 전체보기 (258)
    • Common (31)
      • ComputerScience (10)
      • Web (9)
      • Git (1)
      • 세미나 (8)
      • Testing (3)
    • Backend (129)
      • Java (35)
      • Kotlin (3)
      • Spring (26)
      • Ruby (11)
      • RubyOnRails (17)
      • Python (1)
      • Django (3)
      • Infra (3)
      • DataBase (9)
      • SQL (21)
    • Frontend (30)
      • HTML&CSS (1)
      • JavaScript (16)
      • TypeScript (1)
      • Vue (5)
      • Nuxt.js (3)
      • React (4)
    • Book (30)
      • 이펙티브 자바 3판 (9)
    • Lecture (26)
      • [인프런] Vue.js 시작하기 - Age of .. (14)
      • [Tacademy] JPA 프로그래밍 기본기 다지.. (8)
    • 회고 (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JUnit
  • SCSS
  • rubyonrails
  • 개발문화
  • scanner
  • ruby
  • java
  • Finalization
  • JavaScriprt
  • system.out.println
  • locale
  • MVC
  • REST API
  • System.out.printlin
  • Nuxt3
  • 우아콘
  • JAR index
  • 멱등성
  • IBM Plex Sans
  • RESTful

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Seyun(Marco)
Cookie vs Session
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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