devlog

[Web] 쿠키(cookie)와 세션(session) 본문

Web

[Web] 쿠키(cookie)와 세션(session)

bellaah 2019. 9. 14. 19:17

1. 쿠키와 세션을 사용하는 이유

HTTP 프로토콜의 특징이자 약점인 connectionless,stateless를 보완하기 위해 사용한다.

 

2.쿠키(cookie)

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.

쿠키에는 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보가 들어있으며 일정시간동안 데이터를 저장할 수 있다. (로그인 상태 유지 등에 활용) 

쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.

- 쿠키 프로세스

  1. 브라우저에서 웹페이지 접속
  2. 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 로컬(하드)에 저장
  3. 클라이언트가 재 요청시 웹페이지 요청과 함께 쿠키값도 전송
  4. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용

 

3. 세션(Session)

일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술이다.  즉, 웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 때 까지 유지되는 상태이다. 

클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션ID다.

- 세션 프로세스

  1. 클라이언트가 서버에 접속시 세션 ID를 발급
  2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장 (JSESSIONID)
  3. 클라이언트는 다시 접속할 때, 이 쿠키(JSESSIONID)를 이용해서 세션ID값을 서버에 전달

 

4. 쿠키와 세션의 차이

- 저장 위치: 쿠키는 클라이언트에 파일로 저장, 세션은 서버에 저장

- 보안: 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스나이핑 당할 우려가 있어서 보안에 취약하지만 세션은 쿠키를 이용해서 sessionid 만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋다.

- 라이프 사이클: 쿠키도 만료시간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아 있을 수 있다. 또한 만료기간을 넉넉하게 잡아두면 쿠키삭제를 할 때 까지 유지될 수도 있다. 반면에 세션도 만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제된다.

- 속도: 쿠키에 정보가 있기 때문에 서버에 요청시 속도가 빠르고 세션은 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느린 속도를 낸다.

 

* 그렇다면 쿠키를 사용하는 이유는 무엇인가?

- 세션은 서버의 자원을 사용하기때문에 무분별하게 만들다보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있기 때문이다.

'Web' 카테고리의 다른 글

[Web] REST API  (1) 2020.01.20
[Web] Http 통신과 Socket 통신  (0) 2019.11.14
[Web] HTTP 응답 코드  (0) 2019.09.12
[Web] HTTP란 무엇인가?  (2) 2019.09.08
Comments