본 포스팅은
정보 제공용이 아닌
여러 개발자 블로그들의 자료를
바탕으로 보고 배운 것을 직접 정리해본 포스트 입니다.
** 세션(Session)과 쿠키(Cookie)를 사용하는 이유
->> HTTP 프로토콜의 성격과 이에 대한 단점을 보완하기 위함이다.
- 비연결성지향(Connectionless) : HTTP클라이언트에서 요청이 오면 서버는 알맞는 응답을 주고 연결을 끊는 특성.
- 상태없음(Stateless) : 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성.
> 장점: 커넥션을 유지하지 않기 때문에 서버 리소스 낭비가 줄어든다.
> 단점: 통신할 때마다 새로 커넥션을 만들기 때문에 클라이언트에서는 상태 유지가 되지 않아 통신할 때마다 인증 같은 절차를 밟아야한다. 이러한 단점을 보완하기 위해 나온 것이 세션과 쿠키이다.
** 쿠키(Cookie)
- 쿠키란? 웹 서버가 브라우저에게 지시하여 사용자의 로컬 컴퓨터에 저장되는 키와 값(key, value)으로 이루어져있는 파일 또는 메모리에 저장하는 작은 기록 정보 파일이다.
- 왜 사용하는가?
- 세션 관리 : 주로 로그인 정보나 장바구니 정보 등을 저장하는 용도로 쓴다.
- 개인화 : 사용자에 따라 적절한 페이지를 보여줄 수 있다.
- 트래킹 : 사용자의 행동과 패턴을 분석, 기록한다.
- 예시
- ID 저장, 로그인 상태 유지
- 일주일간 다시 보지 않기
- 최근 검색한 상품들을 광고에서 추천
- 쇼핑몰 장바구니 기능
- 단점 : 저장이 서버가 아닌 사용자(클라이언트)에 저장되기 때문에 보안이 매우 취약하다. 최근 암호화를 통해 보완되고 있으나 한계가 있어 민감하거나 중요한 정보를 담는 것은 위험하다.
- 구성 : 이름(name), 값(value), 저장만료기간(Expiers), 경로(Path), 도메인(Domain), 보안연결(Secure)등으로 구성되어있다.
** 세션(Session)
- 왜 사용하는가?
- 쿠키의 단점을 보완
- 쿠키에 대한 정보를 매 헤더(HTTP Header)에 추가하여 보내기 때문에 트래픽을 발생
- 민감하거나 중요한 정보를 쿠키에 담게 되면 생기는 보안에 대한 문제점
- 세션(Htttp Session)이란?
- 서버에 클라이어트의 상태 정보를 저장하는 기술로 논리적인 연결을 세션이라고 한다.
- 프로세스
- 1. 클라이언트가 서버에 Resource를 요청.
- 2. 서버는 HTTP Request를 통해 Cookie에서 Session-id를 확인. -> 없다면 setCookie를 통해 새로 만들어 응답을 통해 발급
- 3. 클라이언트는 발급받은 세션 아이디를 쿠키로 임시로 저장.
- 4. 서버는 이 Session-id로 클라이언트를 구분. Session id를 통해 해당 세션을 찾아 클라이언트 상태 정보를 유지하며 적절한 응답.
- 특징
- Http Session id를 식별자로 구별하여 데이터를 사용자의 브라우저에 쿠키 형태가 아닌 접속한 서버 DB에 저장한다.
- 클라이언트 Http Session id를 쿠키로 메모리 저장된 형태로 가지고 있다.
- 세션 아이디는 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장되며 브라우저 종료시 소멸됨.
- 로그인한 사용자에 대해서만 세션을 생성하는 것이 아니라 로그아웃하면 새로운 사용자로 인식해서 새로운 세션이 생성된다.
- 장점
- 아이디, 닉네임 등의 정보를 세션에 담아두면 요청이 있을 때 마다, DB에 접근할 필요가 없어서 효율적입니다.
- 단점
- load-balancing/시스템 효율성에서 handling하기 어려움.
- 세션 저장 장치가 부족한 시스템에는 적합하지 않음.
** 쿠키와 세션의 비교
♣ 참고 및 인용
'웹 개발 한걸음' 카테고리의 다른 글
[JSP] 2강 - 부트스트랩을 이용한 로그인 화면 만들기 (0) | 2021.03.03 |
---|---|
[JSP] 1강 - 개발 환경 설치 및 설정 (0) | 2021.03.02 |
[JSP] 서블릿(Servlet)의 매핑 방법 (0) | 2021.02.25 |
[JSP] 웹 서버 프로그램과 Servlet (0) | 2021.02.24 |
[펌] Build, Deploy, WAS란? (0) | 2020.09.23 |