[HTTP] Cookie와 Session

김영훈·2021년 12월 6일
0

HTTP

목록 보기
1/2

HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다.

HTTP 프로토콜의 특징

비연결지향(Connectionless)

  • HTTP는 클라이언트가 요청(Request)을 서버에 보내고, 서버는 클라이언트에게 적절한 응답(Response)을 주고 연결(Connection)을 끊는 특성이 있다.

상태없음(Stateless)

  • 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.

HTTP는 이 두 가지 특성을 보완하기 위해서 cookie,session을 사용하게 되었다.
만약 쿠키와 세션이 없다면 페이지 이동마다 인증을 해야할수도 있다.

Session

session은 서버에 클라이언트 정보를 저장, 구분할 수 있는 ID를 만들어 부여하는데 이를 session id라고 한다.

쿠키는 클라이언트단에 저장되는 key, value 값이다. 만료시간/날짜를 정하지 않으면 세션쿠키로 정해져 메모리에 남아있는(종료시점)까지 유효하다.
만료시간/날짜를 지정하면 메모리에서 사라지더라도 만료까지 유효한 지속쿠키로 저장된다.

인증 방식

  1. 사용자 로그인
  2. 서버에서 유효한지 확인 후 유효시 세션ID 저장 후 header로 발급
  3. 클라이언트 세션ID 쿠키에 저장
  4. API 요청시 서버는 쿠키에 저장된 세션ID 검증 후 처리

장단점

쿠키로만 인증을 할 경우 탈취가 너무 쉽기 때문에 세션과 결합하여 인증한다.

쿠키 & 세션은 서버에서 세션 저장소를 사용하기 때문에 부하가 높아지고 최근에는 서버가 분산되고 이에 따라서 세션ID 처리 에러가 난다던지 소셜 인증 같은 부분들에 한계가 있다.
이를 보완하기 위해 최근 자주 사용되는 토큰 기반 인증이 자주 사용된다고 한다.



다음엔 토큰에 대해서 알아보자
profile
개인적인 기록.

0개의 댓글