[JSP] Cookie와 Session

쿠키와 세션이 무엇인가?

쿠키와 세션은 HTTP 프로토콜에서 비연결성무상태라는 특징에서 상태를 유지해야하는 특정 데이터를 관리하기 위해서 사용되는 개념이다.

HTTP 요청, 응답에 사용되기 때문에 HTTP의 Message Header에 정보가 포함된다.

 

 

 

쿠키

쿠키는 브라우저에 정보를 저장하기 때문에 서버 측의 리소스를 세션보다 적게 사용한다.

반대로 브라우저에 저장되기 때문에 다른 사람이 볼 수도 있고, 조작도 가능하기 때문에 보안에 취약하다는 점과 사용자가 쿠키를 차단해버리면 서버 측에서는 쿠키 기반 상태 유지가 불가능하다는 단점이 있다.

 

쿠키는 텍스트 형태의 상태 정보만 저장할 수 있으며, 데이터의 개수와 크기에 제한이 있다. (최대 300개, 도메인 하나 당 최대 20개, 4KB)

 

서블릿 객체에 담아서 사용하며, 쿠키 객체의 메서드를 통해 쿠키를 사용할 도메인과 경로, 유효 시간을 설정할 수 있다.

 

쿠키는 보안이 중요하지 않은 간단한 사용자 정보를 저장할 때 유용하게 사용된다.

  • 자동 로그인
  • 하루 동안 보지않기
  • 최근 검색 리스트
  • 다크모드
  • 언어 설정
  • 맞춤 광고 
  • 장바구니

 

 

 

세션

세션은 서버에 정보를 저장하기 때문에 메모리를 소모한다는 단점이 있으나, 메모리 용량만큼 데이터를 저장할 수 있기 때문에 서버의 메모리 스펙에 따라 쿠키 보다 많은 데이터를 저장할 수 있다.

또한 서버에 저장되기 때문에 안전하다는 장점이 있고, 자바 객체로 저장되기 때문에 텍스트 뿐만 아니라 자바에서 지원하는 모든 타입의 데이터를 사용할 수 있다.

 

세션은 서버에 저장되기 때문에 각 브라우저를 구분할 수 있어야한다. 이를 위해 Session ID를 사용해서 브라우저 마다 1개의 고유한 세션 객체를 유지할 수 있다. 이때 생성된 Session ID는 브라우저에 쿠키로 저장된다.

 

서버에 저장된 세션은 브라우저에서 일정 시간 이상 요청이 없다면, 자동으로 삭제되며, 브라우저에 저장된 세션은 쿠키를 삭제하여 종료된다. 또한 로그아웃 시에는 서버와 브라우저에서 직접 세션 정보를 삭제하게 된다.

따라서 세션은 한번 로그인해서 사용하는 동안만 유지할 데이터를 저장하는 용도로 쓰이며 아래와 같이 사용될 수 있다.

  • 사용자 인증
  • 장바구니
  •  사용자 입력 데이터 (Form Data)

 

 

'개발 > Spring' 카테고리의 다른 글

빌드와 컴파일의 차이  (0) 2023.04.25
[JPA] Query Method & JPQL  (0) 2023.04.23
REST Docs와 Swagger ui  (0) 2023.04.11
Java MVC 패턴을 이용한 간단한 미니 쿠팡 만들기  (0) 2023.04.04
DAO, DTO, VO  (0) 2023.03.16