쿠키와 세션

oasis·2023년 3월 11일
1

CS

목록 보기
2/5
post-thumbnail

[참고링크 : tistory]

HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용

  • connectionless: 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징

  • stateless: 통신이 끝나면 상태를 유지하지 않는 특징

    → 서버는 클라이언트가 누구인지 매번 확인 필요

    → 이러한 특성을 보완하기 위해 쿠키와 세션 사용

쿠키

  • 로컬에 저장되는 키와 값이 있는 데이터 파일
  • 사용자 인증 유효시간 명시 가능함
  • 클라이언트에 300개까지 가능, 도메인당 20개, 하나의 쿠키값은 최대 4KB
  • 구성요소: 이름, 값, 유효시간, 도메인, 경로

    쿠키의 동작 방식

    1. 클라이언트가 페이지 요청

    2. 서버에서 쿠키 생성

    3. HTTP 헤더에 쿠키 포함시켜 응답

    4. 브라우저 종료되어도 유효시간 내에서는 클라이언트에서 보관

    5. 같은 요청을 할 경우 HTTP헤더에 쿠키 함께 보냄

    6. 서버에서 쿠키를 읽고, 상태 변경 필요 있을 경우 쿠키 업데이트하여 응답

      예시

    • 로그인시, 아이디 비밀번호 저장
    • 장바구니

세션

  • 사용자 정보 파일을 서버측 관리
  • 클라이언트를 구분하기 위해 세션ID를 부여하여 브라우저 종료시까지 인증상태 유지
  • 쿠키보다 보안에 좋지만 서버 메모리 많이 차지하게 됨
  • 클라이언트가 요청 보내면, 서버 엔진이 클라이언트에게 부여하는 유일한 ID가 세션 ID

    예시

    • 로그인처럼 중요한 작업 수행하는 경우

쿠키 vs 세션

  • 쿠키 : 사용자 브라우저에 저장되는 임시 정보. 사용자 임의로 저장되거나 삭제될 수 있어 중요도가 비교적 낮은 데이터만 쿠키로 저장함. 인터넷을 이용할때 임시 키도 쿠키에 저장되어 서버에서 사용자를 식별할 수 있게 됨
    • 서버에 요청할 때 쿠키에 저장된 세션 id를 서버에 요청할때 같이 전달하여 요청
  • 세션 : 서버에 임시로 저장한 파일. 중요한 데이터를 저장할 떄 사용하며 브라우저를 종료할 떄까지 유지됨.


주요 차이점


쿠키세션
저장위치클라이언트서버
보안취약우수
요청 속도빠름느림
만료시간만료기간 설정에 따라, 브라우저 종료해도 남아있음만료시간에 관계없이 브라우저가 종료되면 삭제

세션은 사용자 수 만큼 서버 메모리 차지하기 때문에,

속도가 느려질 수 있음

→ 토큰 기반 인증방식 JWT 사용하는 추세

0개의 댓글