세션 쿠키(Session Cookie)
웹사이트에서 로그인한 뒤 브라우저를 껐다 켰더니 로그인이 풀린 경험, 한 번쯤 있으셨을 거예요. 이는 대부분 세션 쿠키(Session Cookie) 때문입니다. 세션 쿠키는 사용자 인증과 세션 유지의 핵심 도구로, 일시적인 정보 저장에 적합합니다.
이 글에서는 세션 쿠키의 개념과 특징, 일반 쿠키와의 차이, 그리고 개발 시 언제 세션 쿠키를 사용할지에 대해 자세히 설명합니다.
1. 세션 쿠키란?
세션쿠키는 브라우저가 켜져 있는 동안만 유지되는 쿠키입니다. 즉, 사용자가 브라우저를 닫는 순간 쿠키는 자동으로 삭제됩니다.
- 저장 위치 : 사용자의 브라우저 메모리
- 만료 시점 : 브라우저 종료 시
- 사용 예시 : 로그인 세션, 임시 필터 정보, 쇼핑 카트 임시 저장 등
세션 쿠키의 동작 원리
- 사용자가 로그인하면 서버는 세션 ID를 생성합니다.
- 서버는 이 ID를 쿠키로 내려보냅니다.
- 클라이언트는 이 값을 세션 쿠키로 저장합니다.
- 사용자가 브라우저를 종료하면, 쿠키는 사라지고 인증도 종료됩니다.
예시
document.cookie = "userId=dachae; path=/";
- 위처럼 expires 나 max-age 를 지정하지 않으면, 이 쿠키는 세션 쿠키가 됩니다.
2. 세션 쿠키 vs 일반 쿠키
구분 | 세션 쿠키 (Session Cookie) | 지속 쿠키 (Persistent Cookie) |
저장 위치 | 브라우저 메모리 | 브라우저 로컬 스토리지 (디스크) |
유지 기간 | 브라우저 종료 시 삭제 | 명시된 만료일까지 유지 |
설정 방식 | expires 없이 설정 | expires 또는 max-age 포함 |
사용 용도 | 임시 인증, 일시적 상태 | 자동 로그인, 장기 설정 저장 |
3. 코드 예시 - 로그인 세션 유지
// 세션 쿠키 설정 (브라우저 꺼지면 사라짐)
document.cookie = "isAuthenticated=true; path=/";
// 지속 쿠키 설정 (하루 유지)
document.cookie = "isAuthenticated=true; expires=" + new Date(Date.now() + 86400000).toUTCString() + "; path=/";
차이점은 expires 속성의 유무입니다.
4. 언제 세션 쿠키를 사용할까?
- 보안이 중요한 경우 : 브라우저가 닫히면 자동으로 로그아웃되길 원할 때
예) 공용 컴퓨터에서 사용하는 은행 웹사이트, 관리자 페이지 - 일시적인 상태 저장 : 필터 선택, 검색 조건 등 사용자가 새로고침하거나 다른 페이지로 이동할 때만 유효한 값
예) 임시 검색 조건, 모달 열림 여부 - 자동 로그인 방지 : 로그인 유지가 필요하지 않은 서비스에서는 세션 쿠키만 사용해 자동 로그인을 방지
5. 보안 관점에서의 주의사항
세션 쿠키는 자동 삭제된다는 장점이 있지만, 기본적으로 문자열로 클라이언트에 저장되는 것이기 때문에 다음을 주의해야 합니다:
a. HttpOnly 설정
- 자바스크립트에서 접근 불가능
- XSS(크로스사이트스크립팅) 방어에 효과적
- 이 설정은 서버 측에서만 적용 가능
b. Secure 설정
Set-Cookie: sessionId=abc123; Secure
- HTTPS 연결에서만 쿠키 전송
- 평문 전송을 막아 정보 유출 방지
c. SameSite=Strict
Set-Cookie: sessionId=abc123; SameSite=Strict
- CSRF 공격 방지
- 외부 사이트에서 쿠키를 보내는 요청 제한
6. 마무리
항목 | 내용 |
세션 쿠키란? | 브라우저 종료 시 사라지는 일시적 쿠키 |
사용 시점 | 보안이 중요하거나, 일시적 상태 저장이 필요할 때 |
설정 방식 | expires 없이 설정 시 자동으로 세션 쿠키 |
보안 팁 | HttpOnly, Secure, SameSite 옵션을 서버에서 함께 설정할 것 |
함께 보면 좋은 자료
블로그 글 :
[웹 저장소] localStorage, sessionStorage, Cookie 의 차이와 사용법
localStorage, sessionStorage, Cookie 웹 페이지에서 데이터를 저장해야 할 때 localStorage, sessionStorage, cookie 중 무엇을 선택해야 할지 고민되시나요? 이 세 가지는 저장 위치는 같지만, 수명, 용량, 사용 목
dachaes-devlogs.tistory.com
'시스템 지식 > 보안' 카테고리의 다른 글
[ARP 스푸핑 공격] IP와 MAC을 위조해 트래픽을 탈취하다. (0) | 2025.04.29 |
---|---|
[세션 하이재킹] 사용자의 신뢰를 가로채는 공격 (0) | 2025.04.21 |
[Access Token과 Refresh Token] 개발자를 위한 인증 토큰 설명서 (0) | 2025.04.14 |
[JWT의 구조] Header, Payload, Signature의 역할과 의미 (0) | 2025.04.14 |
[JWT] 인증 시스템의 핵심 (0) | 2025.04.14 |