
HTTP 프로토콜의 특성
쿠키와 세션을 이해하기 위해선 HTTP 프로토콜의 특성인 비연결성(Connectionless)과 무상태성(Stateless)에 대해서 먼저 알고 있어야 한다. 이전 글을 참조하여 한 번 훑어보고 오는 것이 쿠키와 세션을 이해하기 쉽다.
2024.10.18 - [WEB] - [HTTP] HTTP의 특성 : 비연결성(Connectionless), 무상태성(Stateless)
[HTTP] HTTP의 특성 : 비연결성(Connectionless), 무상태성(Stateless)
HTTP는 웹에서 데이터를 주고받기 위한 프로토콜이다. HTTP의 두 가지 특성을 알아보자. 1. 비연결성(Connectionless) 비연결성은 HTTP가 기본적으로 요청과 응답이 끝나면 연결을 끊어버리는 특성이
ejk5148.tistory.com
쿠키(Cookie)와 세션(Session)을 사용하는 이유?
HTTP 프로토콜의 특성상 기본적으로 사용자의 상태를 기억할 수 없기 때문이다. 쿠키와 세션은 웹 애플리케이션에서 사용자 정보를 관리하기 위해 사용된다. 서버와 클라이언트 간의 상태 정보를 유지하고 사용자의 편의에 중점을 두고 있다.
1. 쿠키(Cookie)

쿠키를 비유를 들어 설명하자면,
카페에서 고객에게 쿠폰 도장을 찍어주는 것과 비슷하다고 생각하면 된다. 고객이 음료를 주문하면 직원이 도장 카드에 도장을 찍어준다.
그 이후에 다시 고객이 카페에 방문하면 직원은 도장 카드를 보고 "아, 이 고객은 이전에 3번 왔었구나" 라고 알아볼 수 있다.
쿠키는 이 도장카드처럼 사용자의 정보를 기억하고 서버에 다시 방문했을 때 사용자를 식별하는 역할을 한다.
쿠키는 웹 브라우저에 저장되며 서버가 사용자의 브라우저에게 요청하고 저장한다. 이후 사용자가 해당 서버에 다시 방문할 때 브라우저가 이 쿠키를 서버에 전송하게 되고 이렇게 해서 서버는 사용자를 식별하거나 이전에 입력한 정보를 기억할 수 있게 된다.
사용 예시로,
- 자동 로그인: 사용자가 로그인할 때, "자동 로그인 유지"를 선택하면 해당 정보를 쿠키에 저장하여 다음 방문 시 자동으로 로그인한다.
- 아이디 저장: 사용자가 로그인할 때, "아이디 저장"을 선택하면 정보를 쿠키에 저장하면 다음 로그인 할 때 아이디를 입력하지 않아도 된다.
- 장바구니: 사용자가 장바구니에 상품을 담았을 때 해당 정보를 쿠키에 저장해 두어 브라우저를 닫았다가 다시 열어도 장바구니 상태가 유지된다.
하지만 쿠키에는 몇 가지 한계점이 있다.
- 보안에 취약: 쿠키는 클라이언트에 저장되기 때문에 사용자가 직접 접근할 수 있다. 따라서 개인정보(비밀번호 등)를 쿠키에 저장하면 해킹, 탈취 등의 위험이 있다.
- 쿠키의 과도한 사용으로 인한 성능저하: 웹사이트가 너무 많은 데이터를 쿠키로 관리하려 하면 매번 서버와 통신할 때마다 이 데이터가 전송된다. 이는 인터넷 속도가 느린 네트워크 환경에서 웹 페이지 로딩속도를 느리게 한다. 매번 서버에 요청할 때 쿠키를 함께 전송하기 때문에 그 양이 많으면 많을수록 네트워크 성능에 영향을 주게 된다.
위와 같이 쿠키의 보안적인 문제와 트래픽 성능 이슈를 해결하기 위해 세션을 사용한다.
2. 세션(Session)

세션으로 비유를 들어보자.
세션은 도서관에서 열람실 좌석 번호표를 받는 것과 비슷하다. 도서관에 들어가기 전 좌석 번호표를 발급받는다. 사용자는 그 번호표를 갖고 있는 동안 같은 자리를 계속 사용할 수 있게 된다. 웹에서 세션은 서버가 사용자에게 발급하는 번호표(세션ID)와 같다. 사용자와 서버가 연결된 동안(로그인상태) 이 번호표를 통해 사용자를 계속해서 인식할 수 있게 된다.
세션은 사용자가 서버에 접속해서 브라우저를 종료할 때까지의 기간만 유지하는 서버 측 데이터다. 사용자가 웹 사이트에 로그인하면 서버는 사용자에 대한 세션을 생성하고, 세션ID를 발급한다. 이 세션ID는 클라이언트 측에 저장되고 이후 요청할 때마다 서버에 전달된다. 서버는 이 세션 ID를 통해 사용자를 식별하고, 필요한 데이터를 가져온다.
사용 예시로,
- 사용자가 웹사이트에 로그인하면 서버는 해당 정보를 세션에 저장한다. 이후 사용자가 웹사이트 내 다른 페이지로 이동하거나 새로고침해도 로그인 상태가 유지된다. 세션을 사용하지 않으면 새로고침이나 페이지를 이동하게 되면 다시 로그인해야 하는 불편함을 겪는다.
- 쿠키와 다르게 로그인하지 않은 사용자라도 쇼핑몰에서 상품을 장바구니에 담아둘 수 있다. 장바구니에 상품을 추가할 때 서버는 세션에 그 정보를 저장한다. 이후 사용자가 페이지를 이동하더라도 장바구니에 담긴 정보가 사라지지 않는다.
이처럼 세션은 사용자의 일시적인 상태를 서버 측에서 안전히 관리하기 위해 사용한다. 클라이언트 측에서 직접 접근할 수 없는 서버 측 데이터로 보안을 강화함으로써 민감한 정보처리가 필요할 때에는 세션을 필수적으로 사용해야 한다.
세션의 한계?
- 세션은 서버의 메모리에 저장되기 때문에 사용자가 많아질 수록 서버 자원이 많이 소모된다. 특히 동시접속과 같은 대규모 트래픽이 발생할 때에 한계가 있다.
- 세션은 보통 일정 시간이 지나면 만료되는데, 만약 사용자가 로그인한 상태로 작업을 하다가 아무런 동작이 없다면 세션이 만료되고 로그아웃 된다. 이는 보안상 필요하지만 사용자에게는 작업 도중 로그아웃 되는 불편함을 겪을 수 있다.
쿠키와 세션의 차이
- 저장 위치: 쿠키는 클라이언트(브라우저)에 저장되고 세션은 서버에 저장된다.
- 보안: 쿠키는 사용자가 직접 접근 가능하기 때문에 보안에 취약하지만 세션은 서버에 저장되기 때문에 상대적을 보안이 더 좋다.
- 유효 기간: 쿠키는 유효기간을 설정할 수 있어 브라우저를 닫아도 유지되지만 세션은 브라우저가 닫히거나 일정 시간이 지나면 만료된다.
쿠키와 세션은 각각의 장단점이 있다. 사용 목적에 따라 적절히 선택하여 사용하자!.!
'네트워크' 카테고리의 다른 글
[HTTP] HTTP의 특성 : 비연결성(Connectionless), 무상태성(Stateless) (1) | 2024.10.18 |
---|---|
[HTTP] GET과 POST의 차이 (1) | 2024.10.13 |