Contents

웹 쿠키와 웹 세션은 왜 존재할까?

웹 쿠키

웹 쿠키는 무엇인가?

쿠키는 브라우저에 저장된 작은 텍스트 조각이다.

웹 쿠키는 어떻게 생성되는가?

  1. 클라이언트 특정 서버에 접속하여 특정 행동(블랙 모드 설정)을 한다.
  2. 서버는 Set-Cookie를 통해 웹 쿠키를 설정하여 클라이언트에게 전달한다.
  3. 클라이언트는 클라이언트 사이드 저장소에 쿠키 정보를 저장한다.
  4. 클라이언트는 동일한 서버에 접속할 때마다 http에 cookie 헤더에 서버로부터 받은 쿠키 데이터를 함께하여 전송한다.

https://velog.velcdn.com/images/inshining/post/1ee3545b-ff2b-4acf-afa5-c1f3badc9ad7/image.png 출처

웹 쿠키의 특징

  • 유효 기간이 있음
  • 특정 도메인에서 통신할 수 있음
  • 당사자가 확인, 수정, 삭제 할 수 있음
  • 제 3자가 조회하는 것도 가능함

웹 쿠키는 어디서 사용될까?

앞서 살펴 본 것과 같이 누구나 쿠키를 열람하거나 조작할 수 있기 때문에 민감한 아이디나 비밀번호와 같이 민감한 개인 정보를 저장하면 안된다. 누가 탈취하더라도 문제 없 데이터를 저장해 둔다. 예를 들어, 테마 설정이나 해당 도메인에서 개인적인 환경 세팅이 있을 수 있다.

세션

세션은 왜 필요할까?

벨로그와 같이 블로그에서 해당 게시물 계정 주인만이 이전 게시글을 삭제하거나 수정할 수 있다. 게시글과 계정 주인을 판별하기 위해서 “로그인”을 해야 한다. 만약 여러 게시글을 수정해야 한다고 매번 로그인을 요구하면 매우 매우 불편할 것 이다. “세션”을 이용하면 한 번만 로그인하면 브라우저를 끄기 전 까지 로그인 요구하지 않을 수 있다.

세션은 무엇인가?

브라우저에서 암호화된 세션 아이디로 존재하고, 서버에서 해당 세션 아이디를 인증할 수 있는 세션 정보가 존재한다. 세션은 쿠키를 통해 전달된다.

세션는 어떻게 존재할까?

  1. 클라이언트의 로그인 시도가 성공한다.

  2. 서버에서 세션id를 발급하여 브라우저에 전달하고, 세션 정보는 서버 메모리에 저장한다.

  3. 브라우저는 동일한 서버에 접속 할 때마다 쿠키에 세션 id를 포함하여 서버에 전달한다.

  4. 서버에서 세션 id와 서버에 존재하는 세션 정보를 서로 비교하여 응답한다.

https://velog.velcdn.com/images/inshining/post/488cd067-2f74-43f3-ba8d-fcdcd998323a/image.png 이미지 출처

세션의 특징은?

  • 브라우저당 하나 세션 등록한다. (크롬에서 네이버 로그인해도 사파리로 들어가면 네이버 로그인이 안 되어 있다.)
  • 브라우저 종료 혹은 서버에서 세션 무효화하지 않을때 까지 세션 유지된다.
  • 서버에서 세션을 컨트롤 할 수 있다.

세션과 JWT 차이?

JWT는 토큰 기반 인증 방식이기 때문에 클라이언트에서 인증에 필요한 정보를 모두 소유하고 있다. 서버의 메모리에 세션 정보를 저장해야 하는 세션과 달리, JWT는 서버에서 저장해야할 데이터가 없다. 세션 데이터가 서버 메모리에 있기 때문에 세션이 필요없어지거나 무효화해야 할 때 서버 측에서 통제할 수 있다. 반면, JWT는 유효기간이 지나기 전까지 서버 측에서 통제할 수 없다.