[ETC] 쿠키, Session, JWT

최대 1 분 소요

쿠키

  • 서버에서 보통 쿠키는 신경 안쓴다.
  • 쿠키는 조작이 얼마든지 가능해서 신뢰 가능한 값이 아니다.

쿠키의 사용 예

  • 방문 사이트에서 로그인 시, “아이디와 비밀번호를 저장하시겠습니까?”
  • 쇼핑몰의 장바구니 기능
  • 자동로그인
  • 팝업에서 “오늘 더 이상 이 창을 보지 않음” 체크
  • 쇼핑몰의 장바구니 항목

쿠키와 크롬브라우저의 자동완성 차이점

  • 크롬 브라우저 자동 완성은 쿠키랑은 상관 없는 브라우저의 기능이다.



Session 방식

Javax servlet HttpSession 모듈을 사용시 쿠키를 자동 생성해 response한다.

  • SetAttribute로 인증 성공시 쿠키를 자동으로 생성해 클라이언트로 응답한다.

  • 쿠키에는 JSESSIONID 값이 들어있다.

  • 클라이언트는 로그인 API 요청시에 자동으로 쿠키값도 같이 보낸다.

  • 서버는 쿠키에서 JSSESIONID 를 SESSION DB에서 확인해서 대조하고 인증절차를 밟는다.




JWT 방식

토큰 로그아웃 방법

  • 서버에서 토큰을 파괴 방법
  • 서버에서 파괴된 토큰 목록 저장
  • jwt state management
  • jwt logout implementation

Session 과 JWT 방식의 차이

DB에서도 암호화가 가능하다.

인증 할때 취약점 및 주의해야 될 점

  • 누가 어떤 정보를 들고 있나
  • 탈취가 어느 수준에서 가능한가
  • 인증 재사용은 어떻게 하는가