쿠키, 세션, 토큰, 캐시

supway·2022년 9월 23일
0

Tech

목록 보기
2/7

쿠키와 세션을 왜 사용?

=> HTTP 프로토콜 (서버-클라이언트 모델) 은 비연결성, 무상태을 가지기 때문
=> 비연결성 (Connectionless) : 클라이언트가 서버에 요청을 응답을 받으면 그 연결을 끊음
=> 무상태 (Stateless) : 서버가 클라이언트 상태를 보존 X
(위 두 가지 특징으로 인해 리소스 낭비가 줄어드는 대신 클라이언트는 계속 인증을 해야하는 단점이 존재)
-> 해결하기 위해 쿠키와 세션을 사용!!!

쿠키

  • 사용자에 의해 조작되어도 크게 문제가 되지 않을 정보를 브라우저에 저장 (Key-Value 형태)
  • 이름, 값, 만료일(저장기간), 경로 정보로 구성
  • 내가 들고 다니면서 내가 직접 수정할 수 있는 쿠키
  • 보완에 취약 => 수정이 불가능한 중요한 정보, 쿠키에 저장 X
    ex) 자동로그인, 쇼핑몰 장바구니 등

세션

  • 인증에 대한 정보를 서버가 저장 (서버가 세션 관리)
  • 중요한 정보는 세션이라는 별도의 공간(메모리 or DB)에 저장!
  • Session ID라는 기간이 정해져 있는 인식키 발급 => 쿠키에 Session ID 저장
  • 보완성👍but 트래픽을 많이 잡아먹음 (서버에서 세션 저장소를 사용하기 때문에)
    ex) 로그인 후 화면 이동해도 로그인 풀리지 않음

토큰

  • 인증에 대한 정보를 사용자가 저장
  • 서버만 알고 있는 비밀키를 가지고 토큰을 클라이언트에게 발급
  • 클라이언트가 토큰을 제시하면 서버는 비밀키를 이용해 토큰 읽음

세션과 토큰의 차이점

  • 세션 인증에서는 서버가 세션 ID를 저장하고 클라이언트가 쿠키에 실어 보낸 세션 ID와 비교해서 확인
  • 토큰 인증에서는 클라이언트가 발급 받은 토큰을 사용하면 요청을 받은 서버는 토큰이 유효한 지를 확인

캐시

  • 한 번 전송 받은 데이터를 저장해 놨다가 필요할 때 꺼내쓰기 가능
  • 가져올 때 비용이 드는 데이터를 임시로 저장

우아한Tech의 테코톡(연로그님의 Spring vs Spring boot)를 참조하였습니다.

profile
개발잘하고싶은사람

0개의 댓글