React

세션(Session)에서 상태 유지란 뭘 뜻하는가?

...
세션은 서버로부터 발행되어 쿠키에 저장된 세션 ID(임의의 긴 문자열)와 서버측에 저장된 세션ID를 대응하여 로그인을 유지하게 해주는 상태 혹은 방법을 뜻하였다.

세션 탄생배경

쿠키는 사용자의 컴퓨터에 직접 위치하여 상태유지가 가능한 정보들을 담고 있다. 그러므로 간단하게 쿠키에 나의 정보를 담아두고 개인 정보들을 유지시키면 안될까?
쿠키는 클라이언트 로컬에 저장되어 있기 때문에 공격자에 의해 쉽게 변질되거나 훔칠 수가 있기 때문에 보안에 매우 취약하다.
이로 인해 회원정보와 같은 민감한 정보들을 숨기기 위해 서버측에 상태를 식별하기 위한 세션ID(임의의 긴 문자열)를 발급하고 저장하여 클라이언트의 Request를 식별하는 방식을 고안해내었다. 이렇게 생성된 세션ID를 쿠키에 넣어 같이 Response 해주는 방식으로 생성과정이 진행된다.

세션이란?

일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술로, 웹 브라우저를 통해 웹 서버에 접속한 이후 브라우저를 종료할 때 까지 유지되는 상태를 뜻한다.
이전에 쿠키를 설명하는 글에서 보았듯, HTTP 프로토콜은 클라이언트의 상태를 유지하는 능력이 없기 때문에 서버는 클라이언트의 로그인 인증을 지속적으로 인지할 수 없다.
그래서 고안된게 사용자가 웹서버에 접근 할때 보내는 Request Header 쿠키에 사용자를 식별할 수 있는 세션ID값을 집어 넣어 이 ID의 존재여부를 통해 사용자 식별 및 상태 유지를 도와주는 방법을 세션이라고 한다.
세션ID는 단순히 사용자를 식별할 수 있는 의미없는 문자만들로 만들어져 쿠키와 서버 저장소에 동시에 저장되고, 클라이언트의 Request마다 세션ID를 서버측에 저장된 세션ID와 비교하여 식별된다.
안타깝게도, 쿠키에서 조금 더 발전된 생각이지만 다양한 보안 이슈를 가지고 있기 때문에 실제로는 세션을 통한 상태 유지 방법은 잘 사용되지 않는다고 한다.
(단점은 서버 과부하가 있다.)