쿠키와 세션

김수영·2022년 1월 13일
0

Network

목록 보기
4/7
post-thumbnail

Cookie vs Session

HTTP는 상태가 없는(Stateless) 프로토콜이기 때문에 사용자가 웹 브라우저를 통해서 특정 웹 사이트에 접속하게 될 경우 어떤 사용자가 접속했는지에 대한 정보를 파악할 수 없다. 따라서, 쿠키 또는 세션을 사용하여 사용자를 구분하고 각 사용자에 맞는 정보를 제공한다.


쿠키란 클라이언트의 웹 브라우저에 저장되는 작은 데이터 조각으로 서버가 클라이언트의 요청을 식별하는데 사용된다. 쿠키를 활용해서 사용자를 구분하는게 매우 유용하지만, 클라이언트가 수정할 수도 있고 해커가 탈취할 수도 있기 때문에 보안에 취약하다. 따라서, 아이디 및 비밀번호와 같은 민감한 정보들을 저장하는데 사용하지는 않고 아래와 같은 목적으로 사용한다.

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

Session

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

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

차이점

  • 쿠키
    • 클라이언트 쪽에 저장한다. (웹 브라우저)
    • 브라우저가 꺼져도 삭제되지 않고 사용자가 삭제하거나 정해진 시간만큼 유지된다.
    • 문자열만 저장할 수 있다.
    • 클라이언트에서 보내기 때문에 속도가 빠르다.
    • 민감한 데이터를 스니핑 당할수도 있기 때문에 보안에 취약하다.
  • 세션
    • 서버쪽에 저장한다. (서버의 메모리 혹은 데이터베이스)
    • 브라우저가 꺼질 경우 삭제된다.
    • 문자열 뿐 아니라 객체도 저장할 수 있다.
    • 서버쪽에서 처리하기 때문에 속도가 비교적 느리다.
    • 서버에서 민감한 데이터를 갖고 있기 때문에 비교적 보안이 좋다.

참고

profile
기술과 인문학의 교차점

0개의 댓글