쿠키와 세션

Bam·2022년 2월 16일
0

CS

목록 보기
8/28
post-thumbnail
post-custom-banner

쿠키 Cookie

개념

쿠키(cookie)는 웹 페이지에 방문하면 생기는 여러 정보들을 담아서 브라우저에 저장하는 임시 저장 파일입니다. 브라우저는 쿠키를 통해 사용자 정보를 저장했다가 웹 페이지에 다시 접속하면 서버로 쿠키를 전송해 사용자의 정보를 계속해서 사용할 수 있도록 해줍니다.

쿠키는 클라이언트 측에 저장되는 브라우저 정보로, 브라우저 마다 다른 정보를 저장합니다. 다시 말해 크롬에서 사용하던 쿠키는 사파리나, 파이어폭스, IE 등에서는 이용할 수 없습니다.

쿠키를 가장 자주 접할 수 있는 것이, 자동 로그인입니다. 사용자의 로그인 정보를 브라우저 쿠키에 담아서 저장했다가 사이트에 접속하면 자동적으로 쿠키를 통해 정보를 받아 로그인을 합니다. 또한 브라우저의 방문 기록도 쿠키를 이용해서 저장합니다.

용도

쿠키는 다양하게 쓰일 수 있지만, 크게 세 가지 용도로 사용됩니다.

  • 세션 관리
  • 개인화
  • 사용자 정보 추적(트래킹)

세션 관리는 로그인 정보, 세션 접속 시간 등 서버가 사용자의 정보를 가지고 처리하거나 알아둬야할 것들을 저장하는 것을 말합니다. 자동 로그인 기능이 세션 관리 용도로써의 쿠키 사용 방법입니다.
개인화는 사용자에 따라 적절한 페이지 등을 보이는 기능입니다. 개인화 용도로 사용하면 사용자에 맞춰서 적절한 정보를 보여줄 수 있습니다. 가장 대표적인게 구글 애드로 사용자의 검색 기록이나 방문 기록들을 수집해놓았다가 그에 맞춘 관련 광고들을 사용자에게 보여줍니다.
사용자 정보 추적은 사용자의 방문 기록이나 접속 시간 등을 추적하는 기능입니다. 사용자가 페이지에 얼마나 오래 머물렀는지, 얼마나 자주 방문하는지 정보를 추적합니다. 그래서 자주 방문한 페이지라면 종종 브라우저가 추천해주기도 합니다.

특징

쿠키의 특징은 다음과 같습니다.

  • 쿠키의 크기는 하나에 최대 4KB이고, 최대 300개 까지 저장가능한 텍스트 파일이다.
  • 클라이언트측(브라우저)에 저장된다.
  • 쿠키는 이름 값 속성(만료일, 도메인, 플래그 등)으로 구성된다.
  • 만료일을 따로 지정하지 않으면 웹 브라우저가 종료될 때 삭제된다.
  • 브라우저에 쿠키 정보가 있다면 HTTP 요청 헤더에 담겨 보내진다.

쿠키는 사용자 정보를 간편하게 담고 가볍다는 장점이 있습니다. 하지만 클라이언트측에 저장된다는 점 때문에 접근이 쉽고, 보안성이 낮다라는 단점이 있습니다. 당장 우리가 개발자 도구를 열면 쿠키를 조작할 수도 있습니다.


세션 Session

개념

세션(Session)의 뜻은 연결 시간입니다. 이 뜻에 따라 정의하면 세션은 서버-클라이언트 간의 연결 순간 부터 연결 종료까지의 기간을 의미합니다. 하지만 일반적으로 세션이라고 부르면 서버측에 클라이언트에 대한 정보를 담고연결 상태 동안 들어오는 요청은 동일 클라이언트로 인식해 상태와 설정을 유지하는 것을 말합니다. 쿠키와 비교해보면, 쿠키는 클라이언트에서 서버로 보내 사용자를 식별하도록했다면, 세션은 사용자를 식별하는 정보를 서버측에서 가지고 있는 것을 말합니다.

세션의 동작 방식은 사용자가 요청을 하면, 서버가 응답으로 사용자 식별을 위한 세션 쿠키라는 것을 보냅니다. 세션 쿠키는 서버측에서 만든 쿠키를 의미합니다.
사용자는 응답에 대한 답을 세션 쿠키에 담아서 다시 서버로 전송하고, 서버는 세션 쿠키를 통해 세션이 연결된 동안 사용자 통신, 정보 유지 등의 일을 하게 됩니다.

세션을 가장 쉽게 접할 수 있는 예로는, 쇼핑몰에서 로그인을 하고, 쇼핑몰의 여러 페이지를 돌아다녔을 때도, 로그인 상태나 사용자 정보가 유지되어 있는 것이 대표적인 세션 활용의 예입니다.

다시 한 번 강조하지만, 쿠키와 세션의 차이는 정보를 클라이언트측에 담아두냐, 서버측에 담아두냐의 차이입니다.

특징

세션의 특징은 다음과 같습니다.

  • 쿠키보다 용량이 크다. 사실상 제한은 없다.
  • 서버에 세션을 두고 각 클라이언트에 따라 고유한 세션 ID를 부여한다.
  • 세션 쿠키를 이용해 클라이언트에 세션 ID를 전송한다.
  • 브라우저 종료시에 세션 쿠키가 삭제된다.

세션 ID는 클라이언트에게 부여되는 식별자입니다. 이 세션 ID는 로그인 시도때 세션 ID가 서버에 존재하지 않는다면, 새로운 세션 ID를 생성해내고, 사용자의 정보를 담습니다. 그리고 다음 로그인 부터는 해당 세션 ID를 가지고 사용자를 식별하고 통신합니다.


정리

쿠키는 클라이언트측에 저장하는 사용자 정보이고, 세션은 서버측에 저장하는 클라이언트에 대한 정보입니다. 두 방식은 달라보이지만 비슷하고, 특징이 다르기 때문에 용도에 따라 활용해야합니다.
쿠키는 간단하거나, 보안 피해를 입어도 타격없는 정보를 담는데 사용하고, 세션은 민감한 클라이언트 정보를 담는데 사용하는 것이 좋습니다.

post-custom-banner

0개의 댓글