Cookie & Session

Updated:

쿠키(Cookie) & 세션(Session)

HTTP는 상태가 없는(Stateless) 프로토콜이라 사용자가 특정 웹사이트에 접속하게 될 경우 어떤 사용자가 접속하였는지 정보를 파악할 수 없다. 이럴때 쿠키와 세션을 이용하여 사용자를 구분한뒤 맞는 정보를 제공한다.

쿠키(Cookie)

쿠키는 클라이언트의 웹 브라우저에 저장되는 작은 데이터조각이고 서버가 클라이언트의 요청을 식별하는데 사용된다. 쿠키를 활용하면 사용자를 구분하는게 유용하지만, 클라이언트가 수정할 수도 있고, 보안에 취약하다. 아이디와 민감한 정보를 저장하는데에는 사용하지는 않고 다음과 같은 조건일때 사용한다

  • 세션 ID 관리, 서버에 저장해야할 민감한 정보에 대한 식별자 ID
  • 개인화, 사용자 선호 및 테마
  • 트래킹, 사용자 행동 기록 및 분석

세션(Session)

세션이란 브라우저가 서버에 연결되어 있는 동안 유지하는 데이터 집합이다. 사용자가 웹 사이트에 방문하여 서버에 요청을 보내면, 사용자 정보를 서버에 저장하고 식별할 수 있는 세션 ID를 Set-Cookie 헤더로 클라이언트에게 전송한다. 위에서 말한 것처럼 클라이언트는 쿠키로 세션 ID를 관리하고 해당 서버에 요청할때마다 Cookie 헤더에 세션 ID를 포함시켜 전송하기 때문에 서버는 클라이언트를 식별하여 그에 맞는 정보를 응답으로 줄 수 있게 된다. 아래와 같은 목적으로 사용한다.

  • 민감한 정보 관리, 사용자의 비밀번호 및 개인정보

쿠키와 세션의 차이점

  • 쿠키 (Cookie)
  • 클라이언트 쪽에 저장함(웹 브라우저)
  • 브라우저가 꺼져도 삭제되지 않고 사용자가 삭제하거나 정해진 시간만큼 유지된다.
  • 문자열만 저장할 수 있다.
  • 클라이언트에서 보내기 때문에 속도가 빠름
  • 민감한 데이터를 스니핑(데이터를 도청당하는 행위) 당할수도 있기 때문에 보안에 취약.

  • 세션 (Session)
  • 서버쪽에 저장한다 (서버에 메모리 혹은 데이터베이스)
  • 브라우저가 꺼질 경우 삭제된다.
  • 문자열 뿐 아니라 객체도 저장할 수 있다.
  • 서버쪽에서 처리하기 때문에 속도가 비교적 느리다
  • 서버에서 민감한 데이터를 갖고 있기 때문에 비교적 보안이 좋다.

출처 :

Tags:

Categories:

Updated:

Leave a comment