사용자를 구별하지 못하는 HTTP
- HTTP는 상태를 저장하지 않는다.(stateless)
쿠키와 세션
쿠키와 세션은 HTTP에 상태 정보를 유지(stateful)하기 위해 사용.
쿠키와 세션을 통해 서버는 클라이언트 별로 인증 및 인가 가능
- 쿠키
- 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
구성요소
- Name(이름) : 쿠키를 구별하는 데 사용되는 키(중복 X)
- Value(값): 쿠키의 값
- Domain(도메인): 쿠키가 저장된 도메인
- Path(경로): 쿠키가 사용되는 경로
- Expires(만료기한): 쿠키의 만료기한(만료기한 지나면 삭제)
- 세션
- 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
- 서버에서 클라이언트 별로 유일무이한 '세션ID'를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
- 서버에서 생성한 세션ID는 클라이언트의 쿠키값(세션쿠키)으로 저장되어 클라이언트 식별에 사용
쿠키 vs 세션
쿠키
- 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
- 저장위치: 클라이언트(웹 브라우저)
- 사용 ex) 사이트 팝업의 '오늘 다시보지 않기' 정보 저장
- 만료: 쿠키 저장 시 만료일시 설정 가능(브라우저 종료시도 유지 가능)
- 용량 제한: 브라우저 별로 다름
- 보안: 취약(클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있다)
세션
- 서버에서 일정기간 동안 클라이언트 상태를 유지하기 위해 사용
- 저장위치: 웹서버
- 사용 ex) 로그인 정보 저장
- 만료: 다음 조건 중 하나가 만족 될 경우 만료
1. 브라우저 종료시까지
- 클라이언트 로그아웃 시까지
- 서버에 설정한 유지기간까지 해당 클라이언트의 재요청이 없는 경우
- 용량 제한: 개수 제한 없음(단, 세션 저장소 크기 이상 저장x)
- 보안: 비교적 안전(서버에 저장되기 때문에 상대적 안전)