본문 바로가기
네트워크

쿠키와 세션 정리(Cookie, Session)

by 녹녹1 2024. 2. 5.

1. 개요

기술 면접 리스트를 보던 중 "쿠키와 세션에 대해 설명해보세요."라는 질문이 있었다.

대략적인 개념은 알고 있지만 말로 대답해보려고 하니 쉽게 나오지 않았다.

그래서 이번 기회에 쿠키와 세션에 대해 정리해보려고 한다.

 

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

쿠키와 세션을 사용하는 이유의 바탕에는 HTTP 프로토콜이 있다.

HTTP 프로토콜의 경우 기본적으로 Connectionless, Stateless한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 한다.

예를 들어, 쿠키와 세션을 사용하지않으면 쇼핑몰에서 옷을 구매하려고 로그인을 했음에도, 페이지를 이동할 때마다 계속 로그인을 해야한다. 쿠키와 세션을 사용할 경우, 한 번 로그인을 하면 그 사용자에 대한 인증을 유지할 수 있다.

 

이렇게 HTTP 프로토콜의 특성을 보완하기 위하여 쿠키와 세션을 사용한다.

 

3. 쿠키

쿠키는 크롬이나 사파리 같은 브라우저(클라이언트)에 저장되는 작은 텍스트 조각이다.

쿠키는 당사자뿐만 아니라 제 3자가 조회하는 것도 가능하기 때문에 개인 정보를 담은 내용이나 보안상 민감한 정보를 저장하는 데에는 적합하지않다. 

 

예를 들어, 검색 기록에서 이전에 입력했던 검색어를 찾아보거나 로그인하지 않아도 장바구니에 물건을 담아둘 수 있다.

 

특징

  • 사용자는 브라우저의 설정 화면이나 개발자 도구에서 쿠키를 확인하고 수정, 삭제할 수 있다.
  • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
  • 클라이언트에 300개까지 쿠키를 저장할 수 있으며, 하나의 도메인당 20개의 값만 가질 수 있다. 하나의 쿠키값은 4KB까지 저장한다.

4. 세션

사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다.

세션은 사용자가 이미 서버로부터 인증받았음을 증명해준다.

세션에서는 클라이언트를 구분하기 위해 세션ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.

 

예를 들면, 서버는 로그인한 사용자와 로그인하지 않은 사용자를 구분할 수 없는데, 이를 가능하게 하는 것이 세션이다. 즉, 사용자가 사이트에 로그인한 상태라는 점을 서버에게 반복해서 인증하지 않도록 할 수 있다.

 

과정 & 특징

  • 사용자가 서버에서 로그인에 성공하면 세션 아이디라는 데이터를 만들고 세션 아이디를 사용자에게 전달한다.
  • 서버는 영화관에서 티켓을 보관용 부분만 찢어 건네주듯 세션 아이디를 사용자에게 전달하고, 메모리에 아이디 사본을 어떤 사용자의 것인지 적어서 보관한다.
  • 사용자는 서버로부터 받은 세션 아이디를 쿠키로 저장한 후 앞으로의 모든 요청에 함께 전달한다.

사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질 수록 서버 메모리를 많이 차지한다. 즉, 동접자 수가 많을 경우 서버에 과부하를 주어 성능 저하의 요인이 된다.

 

 

세션 미사용

 

세션 사용

 

5. 쿠키와 세션의 차이

  • 쿠키와 세션은 비슷한 역할을 하며, 동작원리도 비슷하다. 그 이유는 세션도 결국 쿠키를 사용하기 때문이다.
  • 가장 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다.

보안

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

라이프사이클

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

요청속도

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

6. 요약

쿠키와 세션 모두 HTTP 통신의 특징인 비연결성과 무상태의 단점을 보완하기 위해 사용한다. 

쿠키브라우저에 저장되는 키와 값이 들어 있는 데이터 파일이다. 이는 서버에서 클라이언트에 대한 정보를 저장하지 않아도 쿠키를 이용해 정보를 재사용할 수 있도록 한다. 예를 들어, 웹사이트의 로그인 인증 정보, 온라인 쇼핑몰의 장바구니 정보 등이 있습니다.

세션은 쿠키와 비슷하게 데이터를 저장하는 방식이지만 키와 값은 클라이언트에, 데이터는 서버에 저장해서 쿠키보다 보안에 강하다는 특징이 있다.

 

7. 마무리

여기에 작성한 내용을 다 암기하는 것은 무리가 있겠지만 개념을 잘 숙지해둔다면 면접에서 질문을 받았을 때 당황하지 않고 (기억나는 거라도) 정리해서 대답할 수 있지 않을까 싶다. 

 

출처

이수진, 『기술 면접 대비 CS 전공 핵심요약집』, 길벗

https://interconnection.tistory.com/74

https://hongong.hanbit.co.kr/%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0-%EC%BA%90%EC%8B%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-cdn/

댓글