2020. 2. 24. 00:07

세션과 쿠키, 그리고 캐시의 차이점은?

우선 가장 먼저 세션과 쿠키, 캐시에 대해서 말하기 전에 HTTP의 특징에 대해 우선적으로 알아야한다. HTTP(Hypertext Transfer Protocol)은 브라우저 같은 응용 프로그램을 통해 사용자와 서버 사이에 전송하는 프로토콜이다. 인터넷 주소 앞에 달려있는 HTTP가 바로 이 HTTP 프로토콜을 이용하고 있다는 뜻이기도 하다.

HTTP는 연결 상태를 유지하지 않는 비연결적인 프로토콜이라는 특징을 가지고 있는데, 예를 들어 브라우저를 통해 사용자의 요청에 따라 서버에 접속하여 요청에 대한 응답의 데이터를 전송 한 뒤에 연결을 종료한다.

이런 간단한 과정 덕택에 전산 자원이 적게 든다는 장점이 있지만 연결이 지속적이지 않기 때문에 사용자와 연결을 종료한 뒤에 추가적으로 요청을 처리할 수 없다는 단점이 있다.

만약 단순 http 연결만으로 사이트를 구성한다면 상품 등을 구매할때 로그인 정보가 계속 연결되지 않아서 매번 구매를 할 때마다 로그인 창이 뜨는 일이 생길 수도 있다.

이런 단점들을 해결하기 위해 쿠키나 세션과도 같은 방법들이 사용되는 것이다.

현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다. 이에 따라 HTTP프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

우선적으로 쿠키와 세션을 자세히 알아보기 전에 가장 큰 특징 먼저 잡고 가자면 쿠키는 클라이언트(로컬, 사용자)쪽에서 저장하는 정보들을 말하고, 세션은 서버(정보 제공자)에 저장한다는 큰 틀을 잡고 가면 좋다.

쿠키(Cookie)


→ 쿠키는 사용자의 브라우저에 저장이 되기 때문에 서버의 자원을 사용할 수 없고, 사용자의 컴퓨터만 있다면 누구나 쿠키안에 있는 데이터를 확인할 수 있기 때문에 보안성이 떨어진다.

  • Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
  • 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법
  • 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.
  • Cookie는 Client PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)
  • 주로 검색 키워드 정보나 자동 로그인 유지 정보, 팝업 보지 않기, 쇼핑 카트나 위시 리스트 저장, 특정 웹사이트에 방문한 적이 있는지, 또 접속했다면 얼마나 자주 방문했는지 등에 관한 정보들을 담고 있다.

 

세션(Session)


→ 클라이언트와 웹 서버간에 네트워크 연결이 지속적으로 유지되고 있는 상태, 서버에 데이터를 저장해 서버의 자원을 사용할 수 있으며 클라이언트가 페이지를 이동 하거나, 재접속했을 때 구분할 수 있는 수단임. 서버에 접속하지 않는 이상 데이터를 탈취하기 어렵기 때문에 중요한 데이터를 저장할 때 주로 사용된다.

  • 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.
  • Session에 관련된 데이터는 Server에 저장된다.
  • 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
  • Cookie에 비해 보안성이 좋다.
  • 주로 로그인 정보 유지하는 것에 사용된다.

 

캐시(Cache)


→데이터나 값을 미리 복사해 임시로 저장해두는 장소를 말한다. 예를 들어 사이트를 불러올때 전에 불러왔던 사진이나 배너, css,js 등을 접속 할 때마다 불러오게 된다면 데이터의 낭비가 일어나게 된다 이를 방지하기 위해서 미리 클라이언트에 저장해두고 다시 접속했을 때서 버가 아닌 사용자의 PC에서 이를 가져오게 되므로 용량을 아낄 수 있다.

  • 캐시를 비우지 않으면 관리자가 이미지를 변경할 경우 사용자의 이미지는 변경되어있지 않는 등의 일이 생길 수 있다.

 

Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유가 있는가? A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 갈 수 있다. 또한 서버의 오류로 인해서 세션을 날리게 되었을 때 사용자의 정보를 다시 갱신해야하는 점들이 생길 수 있다.