쿠키와 세션
- 쿠키, 세션은 HTTP가 가지고 있는 Statless, Connenctionless의 단점을 보완하기 위한 용도로 나온 개념
- HTTP는 서버에 대한 응답을 전달 받은 후, 클라이언트와 서버와의 연결이 끊어진다. (Connenctionless)
- 연결이 끊어지면 이전 상태를 저장하지 않기 때문에 쿠키와 세션이 없으면 연결 상태를 유지할 수 없기에 요청을 할때마다 인증 작업이 계속해서 팔요
쿠키
- 클라이언트에 저장되는 키와 값이 쌍으로 이루어진 데이터 파일
- 만료날짜, 경로정보가 존재한다
- 클라이언트의 상태를 로컬에서 관리하기때문에 서버에 영향을 미치지 않는다.
- 용량과 갯수의 제한이 존재
- 클라이언트에 저장되고 파일로 관리되기 때문에 브라우저의 종료와 상관 없이 설정된 만료 시간까지 존재
- 서버로 요청을 보낼때 요청메시지를 스나이핑 당할 위험이 있기 때문에 보안에 취약하다. 하지만 내부에 존재하기 때문에 빠르다.
세션
- 일정 시간동안 클라이언트의 요청에 대한 상태값을 서버에 유지하는 기술
- 웹 브라우저의 종료 또는 세션만료기간을 통해 삭제 처리 가능
- 쿠기와 달리 서버에서 생성하고 관리하기 때문에 세션의 수가 많이지면 서버의 부하가 커진다.
- 서버에 저장되고 브라우저의 종료 또는 세션만료 시간 이후에 삭제된다.
- 쿠키를 통해 세션id만 저장하고 나머지 관련 정보가 서버에 있기때문에 느리지만 상대적으로 보안이 좋다.
정리
| \ | 쿠기 | 세션 | | — | — | — | | 개요 | 클라이언트에 저장되는 키, 값이 한쌍으로 이루어진 데이터 파일 | 일정 시간동안 클라이언트의 요청에 대한 상태값을 서버에 유지 하는 기술 | | 위치 | 클라이언트 | 서버 | | 정보 전달 속도 | 빠름 | 느림 | | 서버 부하 | 없다 | 있다 | | 보안 | 취약하다 | 상대적으로 좋다 | | 삭제 시간 | 설정된 만료 시간까지 존재 | 브라우저의 종료 혹은 세션 만료시간 이후 삭제 |