[HTTP] 클라이언트의 인증 정보 (쿠키, 세션)

2023. 3. 24. 16:49·CS
728x90
728x90

HTTP 프로토콜의 특징

  ① Connectionless     (↔ 소켓 통신의 커넥션 풀)

      - 하나의 요청(request)에 대한 하나의 반응(response)을 한 후, 연결을 종료함

          → 새 요청이 있을 때마다 항상 새로운 연결을 맺음

 

  ② Stateless

      - 통신이 끝난 후 상태 정보를 저장하지 않음

          → 이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 없음

 

  ⇒ 웹 서버는 클라이언트를 기억할 수 없음 (쿠키 or 세션 필요)

  

 


쿠키 (Cookie)

  - Key와 Value로 이뤄진 일종의 단위

  - 서버에서 생성되어 클라이언트의 브라우저에 저장됨

      → 클라이언트가 다시 서버에 요청을 보낼 때 HTTP 메시지 헤더에 포함되는 정보

 

#  작동 방식

  1. 서버가 클라이언트에게 쿠키를 발급함

  2. 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 함께 전송함

  3. 서버는 클라이언트의 요청에 포함된 쿠키를 확인해서 클라이언트를 구분함

  

#  용도

  - 클라이언트의 정보 기록

      : 각 클라이언트의 옵션을 기억하기 위해 쿠키에 저장해서 사용함

          ex) 다시 보지 않기, 아이디 기억하기 등

  - 상태 정보 표현

      : 클라이언트를 식별할 수 있는 값을 쿠키에 저장해서 사용함

          ex) 이용자 맞춤형 서비스

 

#  문제점

  - 악의적으로 쿠키 정보를 변조해서 서버에 요청할 수 있다는 문제 발생

      → 보완 : 세션 (Session)을 이용한 식별

      · 쿠키로는 주로 클라이언트의 중요하지 않은 정보를 저장/유지함

 

 

반응형
728x90

세션 (Session)

  - 쿠키에 인증 상태를 저장하지만, 클라이언트가 인증 정보를 변조할 수 없게 함

 

#  작동 방식

  1. 인증 정보를 서버에 저장함

  2. 해당 데이터에 접근할 수 있는 키를 유추할 수 없는 랜덤한 문자열로 만들어 클라이언트에 전달함

      : Session ID (최초 요청 시에만)

  3. 브라우저는 해당 키를 쿠키에 저장하고, 이후에 HTTP 요청을 보낼 때 사용함

      : HTTP 메시지 헤더에 포함됨

  4. 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인함

 

#  JSESSIONID ★

  - JSP/Servlet 컨테이너에서 사용되는 SESSIONID의 이름

 

  - 클라이언트가 서버에 접속하면 웹 컨테이너는 해당 클라이언트와 연관된 HttpSession 객체를 생성함

      → JSESSIONID를 생성하여 클라이언트에게 전송함

      → 이후 클라이언트는 쿠키를 통해 JSESSIONID를 서버로 전송함

      → 해당 서버는 그 ID 값으로 클라이언트와 연관된 HttpSession 객체를 찾아서 처리함

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS' 카테고리의 다른 글

[CS] 데이터 전송 포맷 : xml / JSON / yml  (0) 2023.05.11
[HTTP] 상태 코드  (0) 2023.04.10
[HTTP] MIME 타입  (0) 2023.03.22
[HTTP] Web Server & WAS (Web Application Server) ★  (0) 2023.03.22
[HTTP] 웹 브라우저와 웹 렌더링  (0) 2023.03.22
'CS' 카테고리의 다른 글
  • [CS] 데이터 전송 포맷 : xml / JSON / yml
  • [HTTP] 상태 코드
  • [HTTP] MIME 타입
  • [HTTP] Web Server & WAS (Web Application Server) ★
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    면접
    typeScript
    errorNote
    오블완
    zapier
    git
    jQuery
    vuejs
    Hotkeys
    http
    HTML
    php
    Android
    Wordpress
    Swing
    tailwindcss
    티스토리챌린지
    cs
    Codeigniter
    SpringBoot
    SQL
    C#
    jsp
    java
    SEO
    CSS
    개발일지
    SWAGGER
    js
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[HTTP] 클라이언트의 인증 정보 (쿠키, 세션)
상단으로

티스토리툴바