JaeWon's Devlog
article thumbnail
반응형

0. 결론

- 자세히 알아보기 전에, 간단하게 쿠키와 세션에 대해서 공통점 및 차이점은 아래와 같다.

  쿠키(Cookie) 세션(Session)
공통점 웹 통신간 유지하려는 정보(ex: 로그인 정보 등)를 저장하여 사용
차이점 - 개인 PC(브라우저) 에 저장
- 보안 취약
- 속도가 빠름
- 웹 서버에 저장
- 보안 유리
- 속도가 느림

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

- 기본적으로는 HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용.

- HTTP 프로토콜 환경은 "connectionless, stateless" 한 특성을 가지기 때문에, 서버는 매번 클라이언트가 누구인지 확인이 필요.

  • Connectionless(비연결 지향)
    - 클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리 방식
  • Stateless(상태 정보 유지 안 함)
    - 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식

- 실제로는 데이터 유지가 필요한 상황이 많다.
   (예를 들어, 쇼핑몰에서 로그인 이후에 화면이 이동될 때마다 로그인이 풀려 계속 로그인이 필요한 경우)

- 이러한 상황은 페이지의 로딩을 느리게 만드는 요인도 되며, 이러한 번거로움을 해결하기 위해 쿠키와 세션을 사용

- 즉, 클라이언트에서 정보 유지를 위해 사용하는 것이 쿠키와 세션

2. 쿠키(Cookie) 란?

- 사용자가 어떠한 웹 사이트를 방문할 경우, 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일.

- 해당 값을 필요시 정보를 참조하거나 재사용.

  • 특징
    - 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성
    - 클라이언트에 최대 300개까지의 쿠키 저장 가능
    - 하나의 도메인 당 최대 20개의 쿠키를 가짐
    - 하나의 쿠키는 4KB(=4096 byte)의 용량의 데이터 저장 가능
  • 동작 순서
    1. 클라이언트가 페이지를 요청(사용자가 웹사이트 접속)
    2. 웹 서버는 쿠키를 생성
    3. HTTP 헤더에 생성한 쿠키에 정보를 저장하여 응답
    4. 전달받은 쿠키는 클라이언트(브라우저)가 가지고 있다가, 만약 동일 요청 시 요청과 함께 쿠키를 전송
    5. 전달받은 쿠키를 읽어 들여 이전 상태 정보와 비교하여 변경이 필요하면 쿠키를 업데이트하여 다시 응답
  • 쿠키의 사용 예
    - 네이버, 쇼핑몰 등 아이디와 비밀번호를 통해 로그인 시 "아이디와 비밀번호를 저장하시겠습니까?"
    - "오늘은 더 이상 이 창을 보지 않음", "일주일 동안 이 창을 보지 않음" 체크
참고!!!
흔히 브라우저(크롬, 엣지)의 시크릿 모드를 사용 시에는 브라우저를 닫을 때마다 모든 쿠키를 지우기 때문에, 위 예시와 같은 안내창이나 팝업창이 다시 노출된다.

3. 세션(Session) 이란?

- 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보는 것.
- 쿠키를 기반으로 되어 있지만, 사용자 정보 파일을 클라이언트(브라우저)가 아닌 서버 측에서 관리.

- 서버에서는 클라이언트를 구분하기 위한 세션 ID를 부여.

  • 특징
    - 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
    - 서버에 저장되는 쿠키(=세션 쿠키)
    - 브라우저를 닫거나, 서버에서 세션을 삭제했을 때에만 정보가 삭제가 되어, 쿠키보다 보안성에 좋음
    - 저장 데이터에 제한이 없음(서버 스펙에 따라 다르다)
    - 각 클라이언트에 고유 ID를 부여하여 관리
    - 접속한 사용자가 많아질수록 서버 메모리를 많이 차지하게 되어 서버에 부하가 생김
  • 동작 순서
    1. 클라이언트가 페이지를 요청(사용자가 웹사이트 접속) 시에 고유 세션 ID를 발급
    2. 클라이언트는 세션 ID를 확인하고 이에 대해 쿠키를 사용하여 저장
    3. 클라이언트는 서버에 요청할 때, 이 세션 ID를 같이 서버에 전달해서 요청
    4. 서버는 세션 ID를 전달받아 세션 ID 정보에 있는 클라이언트 정보를 사용
    5. 요청한 내용을 처리 후 클라이언트에게 응답
  • 세션의 사용 예
    - 쇼핑몰에서 로그인 이후 화면을 아무리 이동해도 로그아웃이 되지 않음.

4. 쿠키와 세션의 차이

  쿠키(Cookie) 세션(Session)
저장 위치 클라이언트(접속자의 브라우저) 웹 서버
저장 형식 text Object
만료 시점 쿠키 저장시 설정
(브라우저가 종료되도, 만료시점이 지나지 않으면 자동으로 삭제가 되지 않는다.)
브라우저 종료시 무조건 삭제
(기간 지정 가능)
사용하는 자원(리소스) 클라이언트 리소스 웹 서버 리소스
용량 제한 - 총 300개
- 하나의 도메인 당 20개
- 하나의 쿠키 당 4KB(4096byte)
- 서버가 허용하는 한 용량제한이 없음
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 취약 쿠키보다 좋음
세션을 사용하면 더 좋은 것 같은데 쿠키를 사용하는 이유?
세션은 서버의 자원을 사용하기 때문에, 접속자의 수가 많아지면서 무분별하게 만들다 보면 서버의 메모리가 증가하여 서버에 과부하가 발생할 수 있다.
그렇기 때문에, 쿠키와 세션을 적절한 상황과 요소에 맞춰 병행으로 사용한다.

참고

- https://hahahoho5915.tistory.com/32

- https://interconnection.tistory.com/74

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!