세션은 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장합니다. 브라우저를 닫거나 서버에서 세션을 삭제하면 세션이 삭제됩니다. 세션은 각 클라이언트의 고유세션 ID를 부여하는데, 이것으로 클라이언트를 구분하여 각 클라이언트의 요구에 맞는 응답을 반환합니다.
1) 클라이언트 요청
2) Request-Header 필드의 Cookie 에서 세션ID를 보냈는지 확인
3) 세션ID가 없을 경우, 서버에서 생성하여 클라이언트에게 전송
4) 쿠키를 사용해 세션ID를 서버에 저장
5) 클라이언트 재접속 시, 쿠키를 이용하여 세션ID 값을 서버에 전달
구분 | 쿠키 Cookie | 세션 Session |
---|---|---|
저장위치 | 클라이언트 | 서버 |
라이프사이클(만료시점) | 쿠키 저장시 설정 | 브라우저 종료 시 삭제 |
보안 | 비교적 취약 | 안전 |
속도 | 빠름 | 비교적 느림 |
쿠키는 브라우저 종료 시 삭제되는 세션과 달리 쿠키 저장시 만료시점을 저장하여 브라우저가 종료되더라도 자동 삭제되지 않습니다. 즉, 만료시점이 지나야 쿠키가 삭제되는 것 입니다. 세션은 서버에 저장되므로 안전한 반면, 쿠키는 로컬에 저장되어 탈취,변조 위험이 존재합니다. 이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.
하지만 세션은 제공받은 세션Id를 이용해서 서버에서 다시 데이터를 참조해야 하므로 쿠키에 비해 느립니다.
글 잘 읽었습니다!
그러면 세션을 사용하기 위해서는 쿠키를 무조건 같이 사용해야 되나요?