쿠키와 세션을 사용하는 이유
- HTTP의 가장 큰 특징인 무상태성과 비연결성이다.
- HTTP의 통신 결과에대해서 이전 통신 상태가 남아있지 않게 된다.
- 이전 통신 결과가 남아있지 않기 때문에 자원이 낭비되며 이를 해결 하기 위해 쿠키가 등장하였다.
비연결성이란?
- 클라이언트가 요청을 한 후 응답을 받으며 그 연결을 끊어버리는 특징
무상태성이란?
- 통신이 끝나면 상태를 유지하지 않는 특징
쿠키란?
- 쿠키는 사용자가 웹사이트를 방문할 경우 사용자 웹 브라우저를 통해 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일
- HTTP에서 클라이언트의 상태 정보를 PC 에 저장했다가 필요시 참조하거나 재사용할 수 있다.
- 쿠키의 형태는 KEY 와 Value 형태로 저장된다.
- HTTP 헤더에 요청을 보낼 때마다 매번 쿠키를 담아서 보내어 사용한다 이를 이용해서 서버는 사용자 식별에 사용
쿠키 사양
- 300개의 쿠키를 저장할수 있다.
- 하나의 도메인당 20개의 값을 가질 수 있다.
- 하나의 쿠키값은 4kb까지 정장 가능
단점
- 보안에 취약하다 : 쿠키값을 브라우저에서 확인할 수 있어 유출 및 조작 당할 위업이 존재
- 쿠키에는 용량 제한이 있어 많은 정보를 담을 수 없다.
- 쿠키는 특정 도메인과 경로에서만 사용 가능하므로 서로 다른 도메인 간에는 공유가 어려움
- 쿠키는 HTTP요청마다 포함되므로 크기가 커질수록 네트워크 트래픽 증가
세션이란?
- 서버에 사용자 데이터를 저장하여 저장한 값의 ID로 불러올수있다.
- 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안이 좋다.
- 브라우저 종료시(연결이 끝내는 시점) 삭제 된다.
. 세션이 삭제되는 과정
- 사용자가 웹사이트에 로그인하면, 서버(Sprint Boot 등)가 세션을 생성하고, 세션 ID를 브라우저의 세션 쿠키(Session Cookie)에 저장.
- 사용자가 웹사이트를 이용하는 동안, 브라우저는 이 세션 ID를 서버로 계속 전송해서 인증된 상태를 유지.
- 브라우저를 종료하면 세션 쿠키도 삭제되므로, 세션 ID를 사용할 수 없게 됨.
- 다음에 다시 방문하면 새로운 세션이 생성
단점
- 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다,
- 동접자수가 늘어나면 성능 저하를 일으킨다.
- 여러 대의 서버를 사용할 경우 특정 서버에 저장된 세션을 인식하지 못한다 (이를 해결 하기 위해 Redis 사용)
- 데이터 영속석 부족
- 브라우저를 닫거나 일정 시간이 지나면 세션이 사라져 다시 로그인해야 하는 불편함이 있음.
- 해결 방법: "Remember Me" 기능을 추가하거나, JWT를 활용하여 인증 유지.
쿠키와 세션의 차이점
- 쿠키와 세션은 서로 비슷한데 그 이유는 세션도 쿠기를 사용하기 때문이다.
- 저장위치
- 쿠키 : 클라이언트
- 세션 : 서버
- 보안
- 세션이 쿠키보다 우수하다
- 쿠키의 경우 사용자의 로컬에 저장되기에 탈취당하거나 위조 당할수 있다.
- 세션은 쿠키를 이용해서 세션 id만 저장하고 서버에서 확인하기에 비교적 보안성이 좋다
- 요청속도
- 세션은 서버에서 처리가 필요하기에 쿠키가 세션보다 빠르다.
- 라이플 사이클
- 쿠키는 파일로 저장되기에 브라우저 종료해도 정보 유지가 될 수 있다.
- 세션은 브라우저가 종료되면 만료기간에 상관없이 삭제된다.
+) 캐시는?
- 캐시(Cache)는 자주 사용하는 데이터를 임시 저장하여 빠르게 불러올 수 있도록 도와주는 저장소
- 웹 성능을 향상시키기 위해 웹 페이지 요소(HTML, CSS, JS, 이미지 등)를 저장하여 빠르게 로딩할 수 있다.
반응형