본문 바로가기
TIL(Today I Learned )

cookie & session

by 지에스정 2020. 6. 19.

cookie와 sessions은 http 프로토콜을 유지하기 위한 기술

 

우선 http프로토콜의 특징에 대해서 알아야 쿠키와 세션에 대한 이해가 가능하다.

 

HTTP프로토콜 특징

 

  • connectionless - 비연결 지향의 의미로 클라이언트가 서버에 요청을 보낸 후 클라이언트로 응답을 받으면 연결을 끊는 특징
  • stateless - 클라이언트와 서버의 정보가 연결이 끊기게 되면 유지되지 않는 특징

이 두가지 특성으로 인해 사용자가 접속하였을 때 이전 사용자와 같은 사용자인지 알 수 있는 방법이 없어진다.

통신을 할 때 클라이언트에서 매 요청 마다 사용자가 계속 인증해야하는 단점이 발생한다.

이를 보완하기 위해 쿠키와 세선을 필요로 한다.

 

 

 

cookie

 

쿠키는 클라이언트 쪽에 주고받는 데이터

 

클라이언트의 상태 정보를 로컬에 저장한 후 유효시간을 정해놓으면 브라우저 종료 이후에도 인증이 유지된다.

 

클라이언트에 300개 쿠키를 저장 가능하며, 한 도메인에는 20개 쿠키 값만 가지며, 한 개의 쿠키당 4kb를 넘지 않는다.

 

쿠키의 구성요소

 

  • name - 쿠키의 이름
  • value - 쿠키의 값
  • Expires - 쿠키의 유효시간
  • Domain - 쿠키를 전송할 도메인
  • Path - 쿠키를 전송할 경로
  • Secure - 보안 연결 여부
  • HttpOnly - HttpOny 여부

쿠키 작동 방식

 

1.  클라이언트가 서버에 요청

2. 상태 값을 쿠키로 생성

3. HTTP헤더에 서버 응답이 오면 쿠키를  포함시켜 전송

4.브라우저가 쿠키를 보관하고 있다가 같은 요청이 오면 HTTP헤더에서 쿠키를 포함시켜 전송

5.서버에서 쿠키를 읽고 상태를 확인 후 응답

 

쿠키는 예를 들어 인터넷쇼핑몰 장바구니 기능으로 사용되며, 아이디와 비밀번호 자동 저장,

또는 팝업창에서도 다시보지않기로 사용된다.

 

 

seesion

 

서버에서 주고받는 데이터

 

기본적으로 쿠키를 기반으로 하고있으나, 클라이언트가 아닌 서버에서 관리된다.

 

브라우저를 통해 서버에 접속해서 브라우저를 종료할 때 까지 인증을 유지한다.

 

세션의 동작방식

 

1. 클라이언트가 서버에 접속 시 요청

2. 서버가 클라이언트에 세션 ID를 발급

3. 서버 응답시 HTTP헤더에 쿠키의 세션 ID를 전송

4. 브라우저가 종료할 때 까지 세션 ID가 포함된 쿠키를 전송

5. 서버에서 세션 ID를 확인하고 정보를 응답


세션은 보안상 중요한 로그인 이용시 사용된다.

 

 

쿠키와 세션의 차이

 

쿠키와 세션은 비슷한 원리로 작동되며 역할도 같다고 볼 수 있다. 하지만 저장 위치, 보안 , 라이프사이클, 속도에서 차이점이 있다.

 

1.  쿠키의 저장 위치는 클라이언트 이지만 세션은 서버에 저장된다.

2. 쿠키는 클라이언트 로컬에 저장되어 보안상 위험이 크지만, 세션은 쿠키를 이용해 세션ID만 저장되고 값은 따로 정리하여 보안성이 좋다.

3. 쿠키는 만료시간이 정해져 있으며 브라우저 종료 이후에도 남아있으나, 세션은 만료시간이 있다 하더라도 브라우저 종료 이후 삭제된다.

4. 쿠키는 클라이언트에 저장되어 처리 속도가 빠르지만, 세션은 서버에 정보가 있어 처리하는 속도가 상대적으로 느리다.

 

'TIL(Today I Learned )' 카테고리의 다른 글

[aws](Amazon Web Service) IM 39일차 TIL  (0) 2020.06.23
IM 29일차 TIL(promise)  (0) 2020.06.09
IM 26일차 초보개발자 TIL  (0) 2020.06.04
IM15일차 초보개발자 TIL(fetch)  (0) 2020.05.20
IM8일차 TIL ( Time complexity)  (0) 2020.05.07