OMS
Web - Cookie와 Session
주연배
2024. 10. 21. 02:46
쿠키(Cookie)
- 방문자의 정보를 방문자 컴퓨터의 메모리에 저장하는 것(사용자 기록 정보 파일)
- 클라이언트가 페이지 요청 → 웹 서버의 쿠키 생성 → 동일 사이트 재방문시, 요청 페이지와 함께 (남아있는) 쿠키를 전송해서 로그인 유지 가능
세션(Session)
- 일정 시간 동안 클라이언트로부터 들어오는 요구를 하나의 상태로 보고 유지시키는 기술이다.
- *일정 시간 : 웹 서버 접속 시점 ~ 웹 브라우저 종료(연결 끝냄)
Cookie VS Session
저장위치 | 저장형식 | 만료시점(지속성) | 보안 | 리소스 | 용량제한 | |
쿠키 | 클라이언트 (로컬 컴퓨터) | Text | 쿠키 저장시 설정 (웹 브라우저 닫아도 정보 유지) | 취약 | 클라이언트의 리소스에 저장 | 한 도메인 당 20개, 한 쿠키당 4KB |
세션 | 서버 | Object | 1. 웹 브라우저 닫는 순간 삭제, 2. 정확한 시점 모름 | 높음 | 서버의 리소스 | 제한없음 |
저장 위치
- 쿠키 : 클라이언트의 웹 브라우저가 지정하는 메모리나 하드디스크
- 세션 : 서버의 메모리에 저장
만료시점
- 쿠키 : Expires 또는 Max-Age 속성을 통해 설정되며, 이 값이 지나면 쿠키는 자동으로 삭제
- 세션 :
- 클라이언트가 로그아웃하거나 설정 시간동안 반응이 없을시 무효화 되기에 정확한 시점을 모른다.
- 만료 시간을 설정하지 않으면 브라우저를 닫을 때 사라진다.
리소스
- 쿠키 : 클라이언트의 메모리를 사용하기 때문에 서버 자원 사용X
- 세션 : 서버에 저장, 세션이 생길 때마다 리소스 차지
용량 제한
- 쿠키 : 클라이언트도 모르게 접속되는 사이트에 의해 설정될 수 있기에 쿠키의 용량을 제한해둠
- 세션 : 클라이언트가 접속하면 서버에 의해 생성되기에 개수, 용량 제한 X
사용 이유
쿠키와 세션을 사용해 인증하는 이db는 HTTP 프로토콜(Stateless - 비저장)과 관련이 있다.
- HTTP 프로토콜은 비저장 상태이기에
- 클라이언트와 서버 간의 연결은 요청과 응답이 완료되면 끊어진다.
- 즉, 이전 요청에서의 정보를 다음 요청에서 사용할 수 없다(유지x)
- 따라서 상태를 유지하기 위해 쿠키와 세션이 도입됨
- 매번 로그인 정보를 입력하는 상황 해결(유지)
📌 [정리]
1. 사용자의 자격 증명 확인
2. 서버 측 : 세션을 생성해 세션 ID를 쿠키에 담아 클라이언트에게 전송
3. 사용자 확인
4. 세션이 유지(인증된 상태를 유지한다)
HTTP 세션 동작 순서
1. 클라이언트가 서버로 접속(HTTP 요청) 시도
2. 서버는 클라이언트의 header의 cookie 확인
3. 클라이언트는 해당 session-id 보냈는지 확인
4-1. IF, 클라이언트로부터 발송된 session-id 없다면
4-2. else, 서버는 session-id 생성해 클라이언트에게 header의 set-cookie 값으로 session-id를 발행
5. 클라이언트 : 위의 쿠기를 이용해 session-id 값을 서버에 전달하고 서버에서 값을 확인하고 상태를 유지한다.