Cookie & Session
Cookie
- 클라이언트(브라우저) 컴퓨터에 저장되는 키와 값(Key-Value)이 들어있는 작은 기록 정보 파일
- 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있음
- Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
- 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송합니다.
Session
- 클라이언트의 상태 데이터를 서버에 저장하고 참조하여 유지 시켜주는 기술
- 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.
- 서버에서는 클라이언트가 Request를 보내면 유일한 Session ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지합니다.
- 서버 메모리를 많이 차지하는 세션의 단점을 보완한 토큰 기반의 인증 방식 JWT 등을 사용한다.
저장 위치
- Cookie : 클라이언트의 웹 브라우저가 저장하는 메모리 or 하드디스크
- Session : 서버의 메모리에 저장
만료 시점
- Cookie : 저장할 때 Expires 속성을 정의해 삭제될 날짜와 시간을 정하여 무효화 시킨다.
- ex)
expires="Wdy, DD−Mon−YYYY HH:MM:SS GMT"
- Max-Age를 통해 지정된 만료일이 되면 디스크에서 쿠키가 제거됩니다.
- Session : 클라이언트가 로그아웃하거나, 설정 시간 동안 반응이 없으면 무효화 되기 때문에 정확한 시점을 알 수 없다.