쿠키에 중요 정보 값들을 담아 보내는 상황에 쿠키가 노출 되면 유출의 위험이 있다. 즉 보안이 약하다.
웹 브라우저마다 쿠키의 지원형태가 다르기 때문에 공유가 불가능하다.
쿠키의 사이즈 제한
2. 세션
1. 개념
중요 정보 노출을 해결하기 위해 나온 개념이다.
서버에서 클라이언트 별로 유일무이한 '세션 ID'를 부여하면서, 클라이언트별 필요한 정보를 저장하기도 하고 클라이언트를 식별하는데도 사용한다.
클라이언트에서 쿠키 값(세션 쿠키)으로 저장된다.
반환된 세션은 브라우저 Cookie 저장소에 ‘JSESSIONID’라는 Name으로 Value에 저장
보안적인 문제가 발생시 시원하게 세션저장소를 날리면 되기 때문에 보안적인 측면이 상승한다.
2. 동작 방식
클라이언트가 서버에 1번 요청
서버에서 세션ID를 생성하고, 세션 저장소에 해당 세션 정보를 저장한다. 이 후 세션 ID를 쿠키에 반환 한다.
클라이언트는 해당 정보를 저장해놓고, 사용자 인증이 필요한 요청을 할 때마다 이 세션 ID를 쿠키에 담아 전달.
서버가 세션 ID를 확인하고, 1번 요청과 같은 클라이언트임을 인지 후, 응답
3. 단점
HTTP 특징 중 하나인 Stratless 위배
Stateless 와 Stateful
Stateless : 무상태
Stateful : 상태 유지
무상태라는 것은 서버가 클라이언트의 정보를 담지 않는 상태인 것을 의미하고, 상태 유지는 서버가 클라이언트의 정보를 가지고 있다고 생각하면 된다. Statelsee를 유지해야하는 이유는 서버가 모종의 이유로 바뀌게 될 때 (예를 들면 대용량 트래픽으로 인한 Scale-out 인 상황)일 떄 Statteful 상태이면 문제가 생기기 때문이다.