Today I Learned/in dev
세션이란? (feat. cookie)
떼굴펜
2024. 11. 24. 17:42
1. 정의
: 서버와 클라이언트와의 연결 상태
: 서버에서 관리하는 사용자의 상태 저장소
❗) 단어의 사용처를 통해 여러가지 뜻으로 쓰인다는 것을 알았고, 생각보다 정의를 적기 어려웠다.
- 세션이 끊겼다/세션 만료/세션 종료 = 세션(서버와 클라이언트 사이의 연결 상태)가 끊겼다. (끊기면 데이터도 삭제된다.)
- 세션에 OO 정보를 저장했다/담았다 = 세션(사용자 상태 저장소)에 저장했다.
2. 특징
- 일정 시간이 지나면 세션에 저장한 데이터가 삭제된다.
- 서버는 session에 데이터는 저장 및 관리한다.
- 클라이언트는 서버에서 발행한 sessionId를 받아 쿠키에 저장하고, 이를 서버 통신할 때 사용한다.
- sessionId를 탈취당하면 보안 위협(ex.세션 하이재킹)이 발생할 수 있다. (HTTPS 등 설정 필요)
3. 동작 방식
참고) 쿠키와 세션의 비교
쿠키(Cookie) | 세션(session) | |
저장 위치 | 클라이언트(브라우저) | 서버 |
데이터 크기 | 4KB 제한 | 제한 없음 (서버 용량에 의존) |
수명 | 설정된 만료일까지 | 브라우저 종료 시 기본적으로 만료 |
보안성 | 상대적으로 낮음 (클라이언트 측에 노출) | 상대적으로 높음 (서버 측에 저장) |
속도 | 클라이언트에서 바로 참조 가능 | 서버와 통신해야 함 |
용도 | 간단한 상태 저장, 방문 기록 관리 | 민감한 데이터 저장, 인증 관리 |
ref)
- https://developer.mozilla.org/ko/docs/Web/HTTP/Session
- https://raonctf.com/essential/study/web/session_connection