*쿠키(Cookie)와 세션(Session)을 쓰는 이유?
HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용합니다.
기본적으로 HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야합니다. 이 특성을 보완하기 위해서 쿠키와 세션을 사용하게됩니다.
*주요 차이점
사용자의 정보가 저장되는 위치입니다. 때문에 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용합니다. 쿠키는 클라이언트 측에 저장되는 작은 데이터이고, 세션은 서버 측에 저장되는 사용자 상태 정보다.
쿠키(Cookie):
*동작방식
쿠키는 클라이언트(웹 브라우저)에 저장되는 작은 데이터 조각이다.
서버는 클라이언트에게 쿠키를 생성하여 전송하고, 클라이언트는 쿠키를 저장하고 관리한다.
쿠키는 클라이언트가 요청할 때마다 서버로 전송되며, HTTP 헤더에 포함되어 전송된다.
*특징
클라이언트는 쿠키를 통해 서버에게 상태 정보를 전달하고, 서버는 쿠키를 통해 클라이언트를 식별한다.
클라이언트 측에서 쉽게 관리할 수 있으며, 만료 기간을 설정하여 일시적인 정보나 장기적인 로그인 정보 등을 저장할 수 있다.
사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다.
클라이언트에 300개까지 쿠키저장 가능, 하나의 도메인당 20개의 값만 가질 수 있음, 하나의 쿠키값은 4KB까지 저장합니다.
보안에 취약할 수 있으며, 클라이언트가 쿠키를 조작할 수도 있다.
세션(Session):
세션은 서버에 저장되는 사용자의 상태 정보다.
*동작장식
클라이언트가 서버에 접속하면 고유한 세션 ID가 생성되고, 이 세션 ID를 클라이언트에게 전달한다.
클라이언트는 세션 ID를 쿠키를 통해 저장하고, 요청할 때마다 세션 ID를 서버로 전송한다.
서버는 세션 ID를 통해 클라이언트를 식별하고, 해당 세션에 대한 정보를 서버 상에서 관리한다.
* 특징
서버 측에서 보안에 더 강하며, 중요한 정보는 세션에 저장하여 클라이언트 측에 노출되지 않도록 보호할 수 있다.
세션은 일정 시간 동안 유지되며, 클라이언트가 접속을 종료하거나 세션 만료 시간이 지나면 삭제된다.
사용자가 많아질수록 서버의 자원을 사용하게 되므로, 대규모 웹 애플리케이션에서는 세션 관리에 대한 고려가 필요하다.
'TIL(Today I Learned)' 카테고리의 다른 글
[20230623 TIL] 추상클래스, 일반클래스, 인터페이스 차이 (0) | 2023.06.23 |
---|---|
[20230619] 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2023.06.19 |
[TIL 20230614] JVM (0) | 2023.06.14 |
[TIL 20230613] 객체지향 언어 정의와 장단점 (0) | 2023.06.13 |
[TIL 20230608] JAVA 장단점 (0) | 2023.06.08 |