ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cookie와 Session의 차이
    WEB 2020. 4. 27. 16:52
    728x90

    Cookie란?

    • 클라이언트 로컬에 저장되는 키와 값으로 구성된 데이터 파일
    • 쿠키 구성 요소에는 이름, 값, 유효시간, 도메인, 경로 정보가 있음

    Cookie 프로세스

    1. 클라이언트가 페이지를 요청
    2. 서버에서 쿠키 생성
    3. HTTP 헤더에 쿠키를 포함시켜 응답
    4. 브라우저가 종료되어도 쿠키 만료 기간이 지나지 않으면 클라이언트에서 보관
    5. 쿠키가 존재하면 요청을 할 경우 HTTP 헤더에 쿠키를 포함해서 요청
    6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 경우 쿠키를 업데이트해서 변경된 쿠키를 HTTP 헤더에 포함하여 응답

    Session이란?

    • 쿠키를 기반으로하고 사용자 정보를 서버측에서 관리
    • 일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술
    • 사용자 정보를 서버에 두기 때문에 쿠키보다 보안이 좋지만 사용자가 많아질수록 서버 메모리를 많이 차지
    • 클라이언트가 request를 보내면 해당 서버의 엔진이 클라이언트에 유일한 Session ID를 부여

    Session 프로세스

    1. 클라이언트가 서버로 HTTP요청을 시도
    2. 서버는 접근한 클라이언트의 request-header field인 cookie를 확인해 클라이언트가 해당 session-id를 보내왔는지 확인
    3. 만약 클라이언트로부터 발송된 session-id가 없다면 서버는 session-id를 생성해 클라이언트에게 response-header field인 set-cookie값으로 session-id를 응답함
    4. 서버로부터 응답된 session-id는 해당 서버와 클라이언트의 메모리에 저장됨(이때 사용되는 cookie타입은 세션 종료시 같이 소멸되는 memory cookie가 사용됨)
    5. 클라이언트 접속 종료시 서버에 저장된 session-id는 소멸

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

    • HTTP 프로토콜이 Connectionless, Stateless한 특성을 갖고 있기 때문
    • Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어 버리는 특징
    • Stateless : 통신이 끝나면 상태 정보를 유지하지 않는 특징

    쿠키와 세션의 차이

    • 저장위치
      • 쿠키는 클라이언트에 저장
      • 세션은 서버에 저장
    • 보안
      • 쿠키는 클라이언트에 저장되기 때문에 보안에 취약
      • 세션은 쿠키를 이용해서 Session ID만 저장하고 Session ID로 사용자를 구분해서 서버에서 처리하기 때문에 보안성이 비교적 좋음
    • 라이프 사이클
      • 쿠키는 만료시간이 있지만 클라이언트 로컬에 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아있음
      • 세션은 만료시간이 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제됨
    • 속도
      • 쿠키는 클라이언트에 저장되어서 세션에 비해 비교적 빠름
      • 세션은 서버에 저장되어 있기 때문에 쿠키에 비해 비교적 느림
    728x90

    'WEB' 카테고리의 다른 글

    HTTP Status Code  (0) 2020.06.02
    URL과 URI의 차이  (0) 2020.04.27
    WebSocket 이란?  (0) 2020.03.18
    HTTP란?  (0) 2020.03.18
    RESTful API  (0) 2020.02.27
Designed by Tistory.