Client의 정보 기록, 상태 정보를 표현하는 용도
정보 기록?
-> Web Server는 Client의 팝업 옵션을 기억하려고 쿠키에 해당 정보를 기록함 그리고 쿠키를 통해 팝업창 표시 여부를 판단함 / 쿠키는 서버와 통신할 때마다 전송되서 쿠키가 필요 없는 요청을 보낼 때는 리소스의 낭비가 발생함
-> 리소스 낭비 단점 보완 : Modern Storage APIs로 데이터를 저장하는 방식 사용하기
cookie
- 4KB 데이터 저장 제한
Modern Storage API
- cookie랑 비슷하지만 용량이 더 큼
제한
시간 제한 설정
데이터형
데이터 전송
세션의 정의
이벤트
서버는 요청을 보낸 Client가 누군지 알 수 없기 때문에 어떤 Client와 통신하는지 알 수 없음
Client는 서버에 요청을 보낼 때 마다 쿠키를 포함하고, 서버는 해당 쿠키를 통해 Client를 구분함
<쿠키 변조>
쿠키는 Client의 브라우저에 저장되고 요청에 포함되는 정보
-> 악의적인 Client는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있음 -> 서버가 별 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별하면 공격자가 타 이용자를 사칭해 정보 탈취가 가능해짐
<세션>
쿠키에 인증 상태를 저장하지만, 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션을 사용함
Session은 인증 정보를 서버에 저장하고, 데이터에 접근할 수 있는 키(= 유추가 불가능한 랜덤 문자열)를 만들어 Client에 전달함
key == Session ID
브라우저는 key를 쿠키에 저장하고 이후 HTTP 요청을 보낼 때 사용 -> 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인
- cookie : 데이터 자체를 이용자가 저장
- session : 서버가 저장
쿠키는 Client에 저장되기 때문에 Client는 저장된 쿠키를 조회, 수정, 추가할 수 있음
-> Client가 서버에 요청을 보낼 때 쿠키를 요청 헤더에 포함시켜 전송하기 때문에 이용자는 이때 쿠키 헤더 변조가 가능함
-> 쿠키의 만료 시간이 지나면 Client에서 쿠키가 삭제됨