Programming/CS

쿠키와 세션

Bam_t 2021. 11. 3. 15:45
728x90

인터넷을 하다보면 가끔씩 우리는 인터넷 기록 삭제를 할 때가 있습니다. 이때 종종 접하는 단어가 '쿠키 삭제'로 쿠키를 지우는 것이라고 합니다. 또 연결을 하다보면 세션이라는 단어도 많이 듣게됩니다. 이처럼 인터넷을 하다가 자주 만나는 쿠키와 세션이 무엇일까요?


1. 쿠키

1-1. 쿠키의 개념

쿠키(cookie)는 웹 사이트에 방문할 때 생기는 여러 정보들을 담아 브라우저에 저장되는 임시 저장 파일입니다. 사용자가 사이트에 접속하면 브라우저에 정보를 담아뒀다가 재방문을 하게 될 경우 서버로 다시 쿠키를 보내서 하던 작업을 이어서 할 수 있게 해주는 개념입니다. 즉, 쿠키는 클라이언트에 저장되는 브라우저 정보라고 할 수 있습니다.

쿠키는 브라우저마다 다른 정보를 저장합니다. 다시 말하면 내가 크롬을 이용하면서 쌓였던 쿠키정보는 파이어폭스나 사파리에서 이용할 수 없다는 점 입니다.

대표적으로 요즘 많이 쓰이는 자동 로그인이 쿠키의 한 예시 입니다. 브라우저에 로그인하고 자동로그인 수락을 누르면, 로그인 정보를 쿠키에 담아서 브라우저에 담아놨다가 다시 사이트에 접속할 때 브라우저 쿠키에 담긴 정보로 로그인을 하며 서버에 정보를 보내주는 식으로 동작하게 됩니다. 또 다른예시로는 브라우저에서 어디를 방문했었는지에 대한 정보들이 담긴 방문 기록들도 쿠키를 이용한다고 할 수 있습니다.

 

1-2. 쿠키의 용도

쿠키는 다양한 용도로 사용되지만 크게 세 가지의 용도로 이용됩니다.

  • 세션관리
  • 개인화
  • 트래킹

세션관리는 로그인 정보, 세션 접속 시간 등 사용자에 대해 서버가 처리해야하고 알아야 하는 정보들을 저장해 둡니다. 위에서 예시로 든 자동 로그인이 제일 대표적인 쿠키의 세션 관리로써의 사용입니다.

개인화는 사용자에 따라 적절한 페이지 등을 보여주게 하는 기능입니다. 예를 들어 구글 애드같은 경우 최근에 내가 검색한 기록에 따라 그에 맞는 관련된 광고들을 띄워주고 있습니다. 이것이 쿠키가 사용자의 기록들을 저장해놓았기 때문에 맞춤 정보를 제공할 수 있는 이유이기도 합니다.

트래킹은 사용자의 방문 기록 등을 추적하는 것 입니다. 웹 사이트에 얼마나 머물렀는지, 얼마나 자주 오래 방문하는 지에 대한 정보를 추적합니다. 그래서 가끔 설정을 켜두면 크롬 메인 페이지에 내가 자주 방문했던 페이지를 추천으로 띄워 주는 경우가 있을 것 입니다.

 

1.3 쿠키의 특징

쿠키의 특징을 정리해보면 다음과 같습니다.

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

 

이렇게 쿠키를 알아보니 사용자의 개인 정보를 담고 있는 파일이고 클라이언트에 저장되는 만큼 접근이 쉽고 보안이 약하다는 단점을 갖고 있습니다. 그래서 쿠키의 이러한 점들을 해결하기 위해 세션이라는 개념을 도입하게 되었습니다.

 

 

2. 세션

2-1. 세션의 개념

세션(Session)이 원래 의미하는 것은 연결 시간입니다. 즉, 서버와 클라이언트가 연결된 순간부터 연결 종료시 까지의 기간이라고 할 수 있습니다. 하지만 쿠키를 보완하고자 등장한 세션, 그리고 일반적으로 세션이라고 말하는 것은 서버에 클라이언트에 대한 정보를 담아두고 연결 상태 동안 들어오는 요청은 같은 클라이언트로 인식해 상태와 설정을 유지하는 것 입니다. 다시말해 쿠키는 클라이언트에 서버로 보내 사용자를 식별하게 했다면, 세션은 식별 정보를 서버가 가지고 있는 방식입니다.

세션의 방식은 사용자가 로그인을 한다고 요청을 하면 서버는 그에 대한 응답으로 사용자 식별이 가능한 서버측 쿠키를 만들어 보냅니다. 이때 서버가 세션을 위해 만든 쿠키를 세션 쿠키라고 합니다. 사용자는 로그인을 하여 세션 쿠키에 정보를 담아 서버로 보내고, 서버가 세션 쿠키를 이용해서 세션 동안의 통신, 재접속시의 정보 유지 등을 합니다. 세션이 쓰이는 예로는 한 페이지 내에서 로그인하고 페이지 내의 다른 페이지들을 왔다갔다 할 때도 로그인 정보가 유지되는 것을 예로 들 수 있습니다.

쿠키와의 가장 큰 차이점은 쿠키는 클라이언트에서 정보를 갖고 있다면 세션은 서버에 정보를 갖고 있다는 점 입니다. 

 

2-2. 세션의 특징

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

 

세션 ID는 클라이언트에게 부여하는 식별자 입니다. 만약 로그인 시도 때 첫 로그인이라면(즉, 세션 ID가 서버에 없다면), 서버는 세션 ID를 만들어서 회원가입한 로그인 정보와 담아두고 다음 로그인부터 해당 세션 ID로 식별하고 통신하게 됩니다.

 

 

3. 쿠키와 세션 정리

쿠키는 클라이언트 측에 저장하는 사용자 정보이고, 세션은 서버측에 저장하는 클라이언트에 대한 정보입니다. 이렇게 말하면 쿠키와 세션이 다른것처럼 보이지만 세션도 결국 세션 쿠키라는 쿠키를 이용하기에 쿠키와 세션은 방식만 다른 것이지 다른 개념이 아니라는 것 입니다.

쿠키의 특성인 클라이언트 측에 정보를 담는다는 것은 위험하기 때문에 간단한 정보는 쿠키에, 민감한 정보는 세션에 담는게 바람직합니다.

 

728x90