Cookie & Seession

 

Cookies

  • 클라이언트 로컬에 저장되는 key-value 쌍의 작은 데이터다.
  • 쿠키의 기한이 정해져 있지 않고 명시적으로 지우지 않는다면 반 영구적으로 쿠키가 남아 있게 된다.
  • 쿠키는 클라이언트에서 위변조의 가능성이 존재하기 때문에 쿠키값은 암호화해야 안전하다.
  • 쿠키와 세션을 이용하는 이유는 HTTP는 connectionless, stateless한 특성이 있기 때문에 사용자를 식별하기 위해 이용된다.
  • connectionless란 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 바로 끊어버리는 특징이다.
  • stateless란 통신이 끝나면 상태를 유지하지 않는 특징이다.
  • 쿠키와 세션을 사용하지 않으면 한 번 로그인 이후에 쇼핑몰에서 옷을 구매하려고 해도 다시 로그인을 해야 합니다.
  • 쿠키에는 쿠키를 구별하는데 사용되는 이름, 값, 유효시간, 도메인, 경로 등이 포함되어 있습니다.

Session

  • 브라우저가 종료되기 전까지 클라이언트의 요청을 유지해주는 기술입니다.
  • 세션 값은 서버에 저장이 되는데 쿠키와 다르게 클라이언트가 서버에 서비스를 요청했을때 랜덤한 세션값을 생성한 후 그것을 서버에 저장해서 클라이언트에게 쿠키 헤더쪽에 세션 아이디를 보냅니다. 쿠키와 차이점은 쿠키는 클라이언트의 요청에 대해 저장하지 않고 단순히 쿠키 안에 필요한 정보를 담아서 전송하고 이후에 그 쿠키값 자체를 비교합니다. 세션은 클라리언트가 서버에게 세션 아이디를 보내서 세션 서버에 그 세션 아이디가 존재하는지 확인하고 클라이언트의 요청을 유지해주는 역할을 합니다.
  • 쿠키와의 차이점은 세션은 서버에 저장되기 때문에 요청이 많을수록 서버에 부하가 걸립니다.
  • 세션은 서버에서 처리하기 때문에 속도가 느리고 쿠키는 클라이언트단에서 처리하기 때문에 속도가 빠른편입니다.
  • 보안면에서 세션이 쿠키보다 좀 더 안전한데 그 이유는 세션은 서버에 아이디만 저장하고 그것으로 서버에서 처리하기 때문에 클라이언트에서 위변조 될 가능성이 있는 쿠키보다 안전하다고 말 할 수 있습니다.