쿠키와 세션

2019. 9. 11. 11:28

HTTP 프로토콜은 비연결성(Connectionless)과(Connectionless) 비상태성(Stateless)이라는 특징이 있다

 

Connectionless 

클라이언트가 서버에 요청을 하고 서버가 클라이언트에게 응답을 보내면 접속을 끊는 특징이 있다

 

Stateless 

통신이 끝나면 상태 정보를 유지하지 않는 특징이 있다

 

비연결성이라는 특성 덕분에 통신 연결을 유지하지 않아 리소스 낭비가 줄어드는 것이 큰 장점이지만, 통신할 때마다 클라이언 트가 인증을 새로 해야 하는 단점이 있다.

ex) 쇼핑몰 웹사이트에 최초 로그인해도 페이지를 이동할 때마다 계속 로그인을 해야 한다. 따라서, 클라이언트 인증을 유지하기 위해 쿠키와 세션을 사용한다

 

출처 : https://compo.sr/data_custom/images/docs/tut_cookies/image.png

 

쿠키(Cookie) 

 

쿠키는 클라이언트 측(로컬/브라우저)에 저장되는 작은 데이터 파일이다. 서버에 접속 시 접속한 클라이언트 상태 정보를 로컬에 저장했다가 참조한다. 4KB이하만 저장 가능하다. 클라이언트에 300개의 쿠키까지 저장 가능하고 하나의 도메인당 20개의 값만 가질 수 있다

 

쿠키 구성 요소 

 

  • 이름: 각각의 쿠키를 구별하는 데 사용되는 이름
  • : 쿠키가 갖고 있는 값
  • 유효시간: 쿠키의 유지시간 -> 로그인 상태 유지에 활용
  • 경로: 쿠키를 전송할 요청 경로 

 

쿠키 동작 방식 

 

1. 클라이언트가 페이지를 요청한다.

2. 서버는 쿠키를 생성하고 저장한다.

3. 클라이언트에게 응답할 때 HTTP 헤더에 쿠키값을 포함시켜 전송한다.

4. 넘겨 받은 쿠키는 클라이언트가 만료시간까지 갖고 있고, 쿠키가 존재할 경우 요청 시 HTTP 헤더에 쿠키를 함께 보 

낸다.

5. 서버에서 쿠키를 읽어 이전 상태를 변경할 필요가 있으면 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답한

 

쿠키 사용 예시 

 

  • 로그인 상태 유지 / 아이디와 비밀번호를 저장하시겠습니까?
  • 장바구니
  • 오늘 하루 다시 보지 않기 

 

세션(Session) 

 

세션은 클라이언트를 구별하기 위해 세션 ID를 부여하여 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지한다. 세션은 쿠키를 기반으로 하고 있지만, 세션은 정보 파일을 로컬에 저장하는 쿠키와 달리 서버 측에서 관리한다. 사용자에 대한 정보를 서버에 저장하기 때문에 쿠키보다 보안이 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 되어 과부하로 성 능 저하의 요인이 된다. 로그인과 같이 보안상 중요한 작업을 수행할 때 사용한다. 세션 ID는 브라우저 단위로 저장되고, 브라우저 종료시 소멸된다. 로그인한 사용자에 대해서만 세션을 생성하는 것이 아니므로, 로그아웃하면 새로운 사용자로 인식하여 새로운 세션 이 생성된다

 

세션 동작 방식 

 

1. 클라이언트가 서버에 접속(요청) 시 세션 ID를 발급한다.

2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장한다. (쿠키 이름은 JSESSIONID)

3. 클라이언트가 서버에 재접속 시 이 쿠키(JSESSIONID)를 이용해서 세션 ID값을 서버에 전달한다.

4. 클라이언트의 요청 시마다 서버는 HTTP 헤더의 쿠키 정보(세션 ID)를 확인하고 세션 ID와 매핑되는 사용자로 인식한 

 

, 세션을 구별하기 위한 세션 ID를 통해 각 클라이언트에 따른 요구를 처리할 수 있다

 

세션 사용 예시 

 

페이지를 이동해도 로그인이 풀리지 않고 유지된다

 

쿠키 vs 세션 

 

  쿠키 세션
저장위치 클라이언트의 브라우저가 지정 하드 서버의 메모리
저장형식 String Object
만료시점 쿠키 저장 시 설정 정확한 시점 알 수 없음 
(클라이언트가 로그아웃하거나, 설정한 시간동안 반응이 없을 경우 무효화)
리소스 클라이언트의 리소스
서버의 리소스는 사용하지 않음
서버의 리소스
속도 빠름 느림
용량제한 한 도메인 당 20개
하나의 쿠키 당 4KB
총 300개
용량제한 없음

 

출처: Googling, Wikipedia

BELATED ARTICLES

more