[CS-WEB] 쿠키 & 세션

지영·2023년 7월 24일
0

CS

목록 보기
49/77

📍 알고가면 좋은 지식

  • HTTP의 두가지 특성
  • Connectionless(비연결성) : 연결을 맺은 서버-클라이언트 관계에서 클라이언트의 요청에 대해 서버가 응답을 마치면 그 연결을 끊는 성질을 의미한다.
  • Stateless(무상태성) : 서버가 요청을 보낸 클라이언트의 상태를 저장하지 않는 성질을 의미한다.

쿠키와 세션

✔ 클라이언트의 상태를 기억하기 위한 수단

1. 쿠키(Cookie)

  • 서버에 인증하기 위한 클라이언트의 정보를 클라이언트 단에 저장하는 값.

🍪 쿠키가 생성되는 과정

  1. 클라이언트가 서버에게 페이지 정보를 요청
  2. 서버는 클라이언트에 대한 쿠키 생성 후, HTTP 응답 헤더에 쿠키를 포함하여 응답(HTTP response 헤더의 set-cookie)
  3. 클라이언트의 요청과 서버의 응답이 끝나면 HTTP의 비연결성 성질로 인해 연결이 끊김.
  4. 새로운 요청을 할 경우, 이전에 받은 쿠키값을 보관하고 있다가 HTTP 요청 헤더에 값을 포함하여 요청 (HTTP response 헤더의 cookie)
  5. 서버는 쿠키값을 보고 이전에 요청을 보낸 클라이언트를 인식하고 상태를 기억하여 HTTP의 Stateless성질을 보완함.

🍪 쿠키의 장단점

  • 장점
    • 별도의 인증과정 없이 서버가 요청을 보낸 클라이언트를 기억할 수 있다
    • 지난 번에 검색한 자동완성 기능 등 가벼운 일에 쿠키가 쓰임.
  • 단점
    • 보안 문제에 취약함. 텍스트 형태로 저장되어 쉽게 수정이 가능하기 때문이다. (따라서 중요하지 않은 정보에만 이용해야 함.

2. 세션(Session)

  • 서버에 인증하기 위한 클라이언트의 정보를 서버 단에서 저장 및 관리하는 방식.
  • 세션은 클라이언트에 부여한 세션 ID를 통해 기억한다

🔐 세션의 작동방식

  1. 클라이언트가 서버에게 페이지 정보를 요청
  2. 서버는 클라이언트에 대한 쿠키 생성 후, HTTP 응답 헤더에 세션 ID값이 담긴 쿠키를 포함하여 응답(HTTP response 헤더의 set-cookie)
  3. 클라이언트의 요청과 서버의 응답이 끝나면 HTTP의 비연결성 성질로 인해 연결이 끊김.
  4. 새로운 요청을 할 경우, 이전에 받은 쿠키값을 보관(SSID, JSESSIONID 등)하고 있다가 HTTP요청 헤더에 세션 ID값이 담긴 쿠기를 포함하여 요청(HTTP response 헤더의 cookie)
  5. 서버는 쿠키값을 보고 이전에 요청을 보낸 클라이언트를 인식하고 상태를 기억하여 HTTP의 Stateless성질을 보완함.

🔐 세션의 장단점

  • 장점
    • 쿠키에 비해 비교적 안전하다. 세션 ID는 서버가 발급하고 관리하기 때문에 클라이언트의 정보 자체는 서버에 저장되어 있기 때문이다.
    • 로그인 정보를 유지하여 자동 로그인 되는 기능으로 자주 쓰임.
  • 단점
    • 쿠키에 비해 속도가 느리다. 쿠키는 서버의 헤더를 바로 참조하면 되지만 세션은 세션ID를 주고 받은 다음 인증을 거쳐서 서버의 데이터를 참조해야 하기 때문이다.
    • 해킹의 위험성이 여전히 존재함.

      ✔ Session Hijacking(세션 하이제킹) : 정상통신을 하고 있는 다른 사용자의 세션을 가로채서 별도의 인증 작업 없이 가로챈 세션으로 통신을 계속하는 행위.

쿠키와 세션 비교

쿠키세션
저장 위치클라이언트서버
저장 형식텍스트Object
만료 시점기본적으로 브라우저 종료정확한 시점 모름
리소스클라이언트의 리소스서버의 리소스
용량 제한한 도메인 당 20개제한 없음
profile
꾸준함의 힘을 아는 개발자가 목표입니다 📍

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

좋은 정보 얻어갑니다, 감사합니다.

답글 달기