HTTP의 Stateless
[Network] HTTP(S)
HTTPHyper Text Transfer Protocol[Port = 80]웹에서 데이터를 주고 받는 클라이언트 - 서버 모델의 통신 규약이자, 웹 서버와 웹 클라이언트 사이에 멀티미디어 정보를 전송하는 프로토콜로 사용무상태(state
gretea5.tistory.com
HTTP Request-Response는 클라이언트의 상태를 저장하지 않는다.
- 연결이 끊어지는 순간, 상태 정보가 남지 않는다.
- 연결이 끊어져도 유지가 필요한 데이터는 쿠키 또는 세션에 저장해서 사용한다.
쿠키(Cookie)
쿠키는 클라이언트(웹 브라우저)에 저장하는 작은 데이터 파일
주로 로그인 유지, 사용자 설정, 장바구니 정보 등을 저장하는데 사용한다.
사용자가 웹사이트에 접속하면 서버는 쿠키를 생성해서 클라이언트로 전송하고, 브라우저에 쿠키가 생성된다. 이 후 동일 사이트 방문 시 자동으로 쿠키를 서버에 전송한다.
클라이언트에 저장되기 때문에, 노출이나 변조 가능성이 있어 보안이 취약할 수 있다. 그래서 민감정보를 절대 저장하면 안된다.(공격자로 부터 탈취 당할 위험이 있다.)
만료 기간을 정할 수 있어, 지정된 시간이 지나면 자동 삭제된다.
- 세션 쿠키는 브라우저가 닫힐 때 삭제된다.
- 영속 쿠키는 파일 형태로 브라우저에 지정된 기간 동안 남아있다.
세션(Session)
서버 측에서 사용자의 상태 정보를 저장하는 기술
서버는 각 클라이언트에 고유한 세션 ID를 생성해 클라이언트에 넘겨주고, 클라이언트에서는 이를 쿠키에 저장해 다음 요청 시에 세션ID를 함께 보내는 방식으로 사용한다.
민감정보를 쿠키에 저장하면 공격자로부터 탈취 당할 위험이 있고 서버측에서 즉각적인 삭제도 어렵기 때문에, 민감정보는 세션에 저장하는 것이 일반적이다.
쿠키 vs 세션
| 쿠키 | 세션 | |
| 저장 위치 | 클라이언트(Client) | 서버(Server) |
| (서비스 제공자 측) 비용 | 각 클라이언트에 대해 비교적 적은 용량만 차지해서 적음 | 연결된 모든 클라이언트에 대한 정보를 서버에 저장하고 관리하기 때문에 서버 측 부담이 크다. |
| 보안 | 탈취될 가능성이 있기 때문에 민감 정보를 Plain Text로 저장하거나 복호화 가능한 암호 방식으로 저장하면 위험함 | 클라이언트 측에서는 Session ID(아무런 민감 정보가 없는)만 저장하기 때문에 비교적 보안적 위험도가 낮다. |
| 라이프 사이클 | 클라이언트에서 임의로 삭제하지 않으면, 클라이언트가 종료되어도 유지할 수 있음 Expire에 따라 삭제됨 |
구현 방식에 따라 다양함 쿠키에 저장하는 Session ID는 Expires를 Session으로 지정하면 클라이언트 종료 시 삭제됨 |
| 속도 | 비교적 서버에 주는 부담과 서버에서 수행하는 로직이 적기 때문에 속도가 빠를 수 있음 | Session ID를 생성하고, 조회, 사용하는 로직이 서버에 추가적으로 요구되기 때문에 속도가 조금 더 느릴 수 있음 |
'Development > Knowledge' 카테고리의 다른 글
| [Knowledge] 파일 확장자와 데이터 형식? (0) | 2026.03.21 |
|---|---|
| [Knowledge] Status vs State (0) | 2025.11.11 |
| [Knowledge] REST, REST API (0) | 2025.08.23 |
| [Knowledge] 직렬화 vs 역직렬화 (0) | 2025.05.04 |
| [Knowledge] 동기 vs 비동기, 블로킹 vs 논블로킹 (0) | 2025.05.03 |