[SPRING] 세션과 쿠키

야부엉·2023년 11월 8일
0

SPRING

목록 보기
14/45

1. 쿠키

1. 개념

  • 토큰 저장소(공간)
  • 클라이언트에 저장될 목적으로 생성한 작은 정보를 담는 파일

2. 구성요소

  • name (이름) : 쿠키를 구별하는 데 사용되는 쿠키
  • value (값) : 쿠키의 값
  • Domain (도메인) : 쿠키가 저장된 도메인
  • Path (경로) : 쿠키가 사용되는 경로
  • Expires (만료기간) : 쿠키의 만료 기한

3. 동작 방식

  • 클라이언트가 서버에 1번 요청
  • 서버에서 클라이언트 정보를 담은 쿠키를 생성하고, HTTP 헤더에 쿠키를 포함한 응답
  • 클라이언트는 해당 쿠키를 쿠키 저장소에 저장해놓는다.
  • 클라이언트가 쿠키 저장소에서 쿠키를 꺼내 HTTPP 요청에 쿠키를 담아 전송
  • 서버가 HTTP 요청의 쿠키를 읽어 클라이언트 식별 후, 응답

4. 단점

  • 쿠키에 중요 정보 값들을 담아 보내는 상황에 쿠키가 노출 되면 유출의 위험이 있다. 즉 보안이 약하다.
  • 웹 브라우저마다 쿠키의 지원형태가 다르기 때문에 공유가 불가능하다.
  • 쿠키의 사이즈 제한

2. 세션

1. 개념

  • 중요 정보 노출을 해결하기 위해 나온 개념이다.
  • 서버에서 클라이언트 별로 유일무이한 '세션 ID'를 부여하면서, 클라이언트별 필요한 정보를 저장하기도 하고 클라이언트를 식별하는데도 사용한다.
  • 클라이언트에서 쿠키 값(세션 쿠키)으로 저장된다.
  • 반환된 세션은 브라우저 Cookie 저장소에 ‘JSESSIONID’라는 Name으로 Value에 저장
  • 보안적인 문제가 발생시 시원하게 세션저장소를 날리면 되기 때문에 보안적인 측면이 상승한다.

2. 동작 방식

  • 클라이언트가 서버에 1번 요청
  • 서버에서 세션ID를 생성하고, 세션 저장소에 해당 세션 정보를 저장한다. 이 후 세션 ID를 쿠키에 반환 한다.
  • 클라이언트는 해당 정보를 저장해놓고, 사용자 인증이 필요한 요청을 할 때마다 이 세션 ID를 쿠키에 담아 전달.
  • 서버가 세션 ID를 확인하고, 1번 요청과 같은 클라이언트임을 인지 후, 응답

3. 단점

  • HTTP 특징 중 하나인 Stratless 위배

    Stateless 와 Stateful
    Stateless : 무상태
    Stateful : 상태 유지
    무상태라는 것은 서버가 클라이언트의 정보를 담지 않는 상태인 것을 의미하고, 상태 유지는 서버가 클라이언트의 정보를 가지고 있다고 생각하면 된다. Statelsee를 유지해야하는 이유는 서버가 모종의 이유로 바뀌게 될 때 (예를 들면 대용량 트래픽으로 인한 Scale-out 인 상황)일 떄 Statteful 상태이면 문제가 생기기 때문이다.

3. 쿠키와 세션 비교


출처

내일배움 캠프 Spring Master

profile
밤낮없는개발자

0개의 댓글