본문 바로가기

TIL(Today I Learned)

[20230615 TIL] 쿠키와 세션

*쿠키(Cookie)와 세션(Session)을 쓰는 이유?
HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용합니다.

기본적으로 HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야합니다. 이 특성을 보완하기 위해서 쿠키와 세션을 사용하게됩니다.

*주요 차이점
사용자의 정보가 저장되는 위치입니다. 때문에 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용합니다. 쿠키는 클라이언트 측에 저장되는 작은 데이터이고, 세션은 서버 측에 저장되는 사용자 상태 정보다.

쿠키(Cookie):

*동작방식

쿠키는 클라이언트(웹 브라우저)에 저장되는 작은 데이터 조각이다.
서버는 클라이언트에게 쿠키를 생성하여 전송하고, 클라이언트는 쿠키를 저장하고 관리한다.
쿠키는 클라이언트가 요청할 때마다 서버로 전송되며, HTTP 헤더에 포함되어 전송된다.

*특징

클라이언트는 쿠키를 통해 서버에게 상태 정보를 전달하고, 서버는 쿠키를 통해 클라이언트를 식별한다.
클라이언트 측에서 쉽게 관리할 수 있으며, 만료 기간을 설정하여 일시적인 정보나 장기적인 로그인 정보 등을 저장할 수 있다.
사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다.
클라이언트에 300개까지 쿠키저장 가능, 하나의 도메인당 20개의 값만 가질 수 있음, 하나의 쿠키값은 4KB까지 저장합니다.
보안에 취약할 수 있으며, 클라이언트가 쿠키를 조작할 수도 있다.

세션(Session):

세션은 서버에 저장되는 사용자의 상태 정보다.

*동작장식

클라이언트가 서버에 접속하면 고유한 세션 ID가 생성되고, 이 세션 ID를 클라이언트에게 전달한다.
클라이언트는 세션 ID를 쿠키를 통해 저장하고, 요청할 때마다 세션 ID를 서버로 전송한다.
서버는 세션 ID를 통해 클라이언트를 식별하고, 해당 세션에 대한 정보를 서버 상에서 관리한다.

* 특징

서버 측에서 보안에 더 강하며, 중요한 정보는 세션에 저장하여 클라이언트 측에 노출되지 않도록 보호할 수 있다.
세션은 일정 시간 동안 유지되며, 클라이언트가 접속을 종료하거나 세션 만료 시간이 지나면 삭제된다.
사용자가 많아질수록 서버의 자원을 사용하게 되므로, 대규모 웹 애플리케이션에서는 세션 관리에 대한 고려가 필요하다.