세션

최대한·2021년 9월 26일
0
post-thumbnail
post-custom-banner

안녕하세요! 오늘은 쿠키와는 사뭇 다른 세션(Session)에 대해서 알아보도록 하겠습니다.

지난 '210925 쿠키' 글에서 쿠키의 문제점으로 '보안성이 낮음!'을 손꼽았는데, 이러한 문제 때문에 쿠키에는 '사용자의 편의를 위하되, 타인에 의한 임의의 수정·삭제·도난당하는 일이 일어나더라도 큰일은 없을 수준의 정보들을 저장'한다고 얘기를 했습니다. 그렇다면 다른 누군가에게 노출되어서는 안 되는 정보들은 어디에 저장될까요?

...

이러한 정보들은 세션으로 '서버' 안에서 다뤄지게 됩니다!

그럼 본격적으로 세션이란 무엇이냐!

세션 Session

: 세션이란 일정 시간 동안 동일한 사용자(브라우저)로부터 오는 어떠한 요청을 하나의 '상태'로 보고 그 상태를 유지하는 기술입니다. (쿠키는 사용자 브라우저에 정보를 저장)
-> HTTP의 Stateless (무상태) 방식을 해결할 수 있겠죠?!

  • 세션의 동작 원리

클라이언트와 서버의 첫 연결 시
1. 클라이언트가 서버에 request를 합니다.
2. 서버는 클라이언트의 유효성을 확인하고, 서버는 클라이언트를 식별하는 고유의 session id를 생성합니다.
3. 서버는 session id로 key와 value를 저장하는 HTTP Session을 생성합니다.
4, 5. session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 response 합니다.
(출처: https://sh77113.tistory.com/243)

  1. 이후 클라이언트는 서버 측에 request를 할 때 session id를 저장한 쿠키를 전송하고,
  2. 서버는 클라이언트의 request에서 session id로 HTTP Session을 찾아서 상태를 유지합니다.

위에서 알 수 있듯이 세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지합니다.
즉, 세션에서 상태 정보를 유지하는 수단은 '쿠키'인걸 확인할 수 있습니다! 두둥;

  • 웹 개발자의 역할
    쿠키는 브라우저에 '파일 형식'으로 저장되어 있습니다. 따라서 처리 속도가 빠르고, 세션은 요청마다 서버에서 처리를 해야 하기 때문에 속도가 비교적 느립니다.

무작정 빠른 처리를 위해 모든 정보를 쿠키에 저장한다면 쿠키는 용량이 제한되어있을뿐더러 (쿠키 표준안인 RFC 2019: 쿠키는 300개까지 만들 수 있으며, 최대 크기는 4,096바이트, 하나의 도메인에서 최대 20개까지 생성 가능), 보안성이 낮아서 추후 문제가 발생할 수 있습니다. 그렇다고 세션을 남발하게 된다면 사이트에 접속자가 많을 경우 서버에 부하가 생길 수 있기 때문에...
웹 개발자들은 사이트를 만들 때 어떤 정보는 쿠키에, 어떤 정보는 세션에 저장할지 적절한 판단을 내릴 수 있어야 합니다!

  • 쿠키와 세션의 차이점
    이제 어느 정도 쿠키와 세션에 대해 감이 잡히는 것 같습니다! 쿠키와 세션을 정리해보도록 하겠습니다.
  1. 저장 위치
    : 쿠키는 사용자(브라우저)에, 세션은 로컬과 서버에 저장됩니다.
  2. 보안
    : 쿠키는 사용자에게 있어 보안성이 낮아 쉽게 조작과 변경, 탈취가 가능하지만,
    세션은 id 값만 가지고 있고 서버에 저장되어있기 때문에 쿠키보다 비교적 보안성이 우수합니다.
  3. 주기
    : 쿠키는 사용했던 브라우저를 종료해도 남아있으나, 세션은 브라우저 종료 시 삭제됩니다.
  4. 속도
    : 쿠키는 브라우저에 파일 형식으로 존재하기 때문에 처리 속도가 빠르고, 세션은 매 요청마다 서버에서 처리하기 때문에 비교적 느립니다!

어제 쿠키를 공부하고 보니 제 친구는 쿠키를 직접 구현하고 있더군요.
저도 부지런히 공부해서 직접 쿠키를 구현해보고 글 올릴 수 있도록 하겠습니다.
화이팅!

profile
한국 사람입니다.
post-custom-banner

0개의 댓글