Cookie와 Session의 개념과 차이점 정리
웹 개발을 하다 보면 쿠키(Cookie)와 세션(Session)은 반드시 마주치는 개념입니다.
이 둘은 HTTP의 약점을 보완하기 위해 고안된 기술로, 사용자 상태를 기억하고 관리하기 위해 사용됩니다.
왜 Cookie와 Session이 필요한가?
그 이유는 HTTP가 가진 두 가지 한계 때문입니다.
| HTTP 특징 | 설명 |
|---|---|
| Connectionless | 클라이언트가 요청하고 서버가 응답하면 바로 연결을 종료합니다. |
| Stateless | 이전 요청과 이후 요청이 서로 연결되어 있지 않습니다. |
결과적으로 서버는 매 요청마다 클라이언트를 새로운 사용자처럼 인식합니다. 그래서 사용자 정보를 유지하기 위해 Cookie와 Session이 필요합니다.
쿠키와 세션의 차이점 비교
| 항목 | 쿠키(Cookie) | 세션(Session) |
|---|---|---|
| 저장 위치 | 클라이언트(브라우저) | 서버 |
| 저장 형식 | 텍스트 형식(key-value) | 객체 형식 |
| 수명 | 설정 가능. 지정하지 않으면 브라우저 종료 시 삭제 | 브라우저 종료 또는 세션 만료 시간까지 |
| 자원 사용 | 클라이언트 자원 사용 | 서버 자원 사용 |
| 저장 용량 | 쿠키당 약 4KB 제한 | 서버 용량이 허용하는 범위 내에서 저장 가능 |
| 속도 | 상대적으로 빠름 | 쿠키보다 느릴 수 있음 |
| 보안성 | 낮음. 조작이나 탈취 위험이 있음 | 상대적으로 높음. 데이터가 서버에 저장됨 |
| 용도 예시 | 로그인 상태 유지, 오늘 하루 보지 않기, 장바구니 | 로그인 인증, 민감 정보 저장 |
핵심 차이 요약
쿠키는 클라이언트에 저장되므로 보안에 취약하지만 서버 부담이 적고 빠릅니다.
세션은 서버에 저장되어 보안성이 높지만 서버 자원을 사용하고 관리가 필요합니다.
그렇다면 왜 쿠키를 계속 사용할까?
세션은 보안 측면에서 유리하지만, 모든 사용자의 세션 정보를 서버에 저장하면 서버 자원 부담이 커질 수 있습니다.
반대로 쿠키는 클라이언트에 저장되기 때문에 서버 부담을 줄일 수 있습니다. 따라서 중요하지 않은 편의성 정보는 쿠키로 저장하는 편이 효율적입니다.
정리하면, 보안이 중요한 정보는 세션, 단순한 편의 기능은 쿠키를 사용하는 것이 일반적입니다.
쿠키와 세션 사용 예시
| 기능 | 쿠키 | 세션 |
|---|---|---|
| 로그인 상태 유지 | 가능 | 가능 |
| 장바구니 | 가능 | 가능 |
| 오늘 하루 보지 않기 팝업 | 가능 | 적합하지 않음 |
| 관리자 인증 | 적합하지 않음 | 적합함 |
보안적으로 기억할 점
쿠키는 노출되거나 조작될 수 있으므로 민감한 정보는 절대 담지 않아야 합니다.
세션은 서버에 저장되므로 상대적으로 안전하지만, 세션 탈취를 막기 위한 설정이 필요합니다.
HTTPS를 사용하고, 쿠키에는
Secure,HttpOnly,SameSite옵션을 적절히 설정하는 것이 좋습니다.
현대 웹에서의 인증 방식
현대 웹에서는 세션만으로는 부족한 경우가 많습니다.
그래서 access_token, refresh_token, 쿠키, 세션을 상황에 맞게 조합해서 사용하기도 합니다.
예를 들어 access token은 짧은 수명으로 사용하고, refresh token은 더 안전한 저장소나 HttpOnly 쿠키에 저장하는 방식이 있습니다.
중요한 것은 하나의 방식만 고집하는 것이 아니라, 서비스의 보안 요구사항과 서버 구조에 맞게 적절히 선택하는 것입니다.

댓글 0