cs지식/CS

[CS] 쿠키(Cookie)와 세션(Session) 차이

jungeun960 2021. 5. 26. 01:52

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

  • HTTP의 비연결성(Connectionless)과 비상태성(Stateless)을 보완하여 서버가 클라이언트를 식별하기 위해 사용합니다.
  • HTTP는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태를 유지하지 않고(비연결성), 연결 해체 후에도 상태 정보를 저장하지 않습니다.(비상태성)  → 사용자를 식별할 수 없어 매번 새로운 사용자로 인식하게 됩니다. ex) 페이지를 이동할 때마다 로그인을 다시 해야 됨.

+ 비연결성(Connectionless) : 클라이언트가 요청(request) 한 후 응답(response)을 받으면 연결을 끊는다

+ 비상태성(Stateless) : 통신이 끝나면 상태를 유지하지 않는다.

 

 쿠키와 세션의 차이 -> 저장 위치, 보안, 속도

  • 가장 큰 차이점은 정보의 저장 위치입니다. 쿠키는 클라이언트에, 세션은 서버에 저장됩니다.
  • 보안면에서는 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠릅니다. 그 이유는 세션은 서버의 처리가 필요하기 때문입니다.
  • 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 스니핑 당할 우려가 있어 보안에 취약하지만 세션은 쿠키를 이용하여 sessionid만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋습니다.
  • 쿠키와 세션은 비슷한 역할을 하며 동작 원리도 비슷합니다. 그 이유는 세션도 쿠키를 사용하기 때문입니다.

+ 세션을 사용하면 좋은데 왜 쿠키를 사용하는가?

-> 세션은 서버의 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당합니다. 때문에 자원관리 차원에서 쿠키와 세션을 적절히 사용하여 서버 자원의 낭비를 방지하고 속도를 높일 수 있습니다.

 

▶ 쿠키(Cookie)

쿠키란

  • 클라이언트(브라우저) 로컬에 저장되는 Key와 Value로 구성된 String형태의 작은 데이터 파일
  • 쿠키의 구성요소 : 이름, 값, 유효시간, 도메인, 경로
  • 세션 관리 : 로그인, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장
  • 개인화 : 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.
  • 트래킹 : 사용자의 행동과 패턴을 분석하고 기록한다

 

쿠키 사용 예

-> 사용자 편의를 위한 것, 지워져도 되고, 가로채이더라도 큰 지장이 없는 수준의 정보

  • 쇼핑몰의 장바구니 기능
  • ID 저장, 자동 로그인
  • 자동 완성, 팝업창 일주일간 다시 보지 않기
  • 최근 검색한 상품들을 광고에서 추천

 

▶ 세션(Session)

세션이란

  • 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
  • 각 클라이언트에게 고유 세션 ID를 부여한다.
  • 보안면에서 쿠키보다 우수하다. -> 사용자에 대한 정보를 서버에 두기 때문에
  • 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다
  • 동접자 수가 많은 웹 사이트의 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.

 

세션 사용 예

-> 사용자나 다른 누군가에게 노출되면 안 되는 중요한 정보

  • 로그인 유지
  • 보안상 중요한 작업을 수행할 경우

 

  쿠키(Cookie) 세션(Session)
저장위치 클라이언트 서버
저장형식 text Object
리소스(사용하는 자원) 클라이언트의 리소스 서버의 리소스
용량제한 클라이언트에 300개 쿠키 저장 가능
하나의 도메인 당 20개,
하나의 쿠키 당 4KB
제한없음
만료시점 쿠키 저장 시 설정
(설정 없을 시에는 브라우저 종료시 만료)
브라우저 종료 시 삭제
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋은
반응형