Lined Notebook

[Java] 03. Cookie & Session?

by ymkim

01. HTTP(Hyper Text Transfer Protocol)의 특성은?

 

쿠키, 세션, 토큰(JWT) 몰라도 괜찮겠어?

깔끔하게 정리했으니 몇 분만 투자해서 이번 기회에 바로 알고 가기 😀

velog.io

  • HTTP인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
  • HTTP는 비연결성(Connectionless), 무상태성(Stateless) 특징을 가짐
  • HTTP는 요청 처리 완료 후 연결을 끊어버리며, 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않음
  • HTTP의 비연결성 및 무상태성 장/단점
    • 장점 : 리소스 낭비를 줄일 수 있음
    • 단점 : 클라이언트가 누군지 알 수 없음 ( 새로고침 후 재로그인, 페이지 이동해도 재로그인.. 등등 )
  • HTTP의 단점을 극복하기 위해 나온 기능이 쿠키(Cookie) 그리고 세션(Session) 이다

02. 쿠키(Cookie)

  • 클라이언트가 어떤 웹 사이트를 방문하는 경우, 해당 사이트의 서버로부터 받는 작은 데이터 파일
  • 브라우저는 매 요청마다 해당 쿠키를 헤더 담아서 서버에 요청
  • 서버는 쿠키 정보를 바탕으로 클라이언트 식별 가능
  • 종료
    • 영속 쿠키 : Java에서 만료 날짜 입력 시 해당 날짜까지 유지
    • 세션 쿠키 : Java에서 만료 날짜 생략 시 브라우저 종료시까지만 유지
  • 장점
    • 상태 유지 가능
    • 네트워크 트래픽 감소 (필요한 정보만 전송 가능)
  • 단점
    • 보안 취약 (요청 시 쿠키 값 그대로 전송, 조작 위험)
    • 용량 제한(4KB)으로 많은 정보 담을 수 없음
    • 쿠키 사이즈 커질수록 네트워크 부하 심해짐
  • 사용
    • 30일간 다시보지 않기 (쿠키에 체크한 날짜를 기록하고, 재방문시 시간차를 계산)
    • 비로그인 쇼핑몰 장바구니 기능
    • 아이디 저장, 로그인 상태 유지
    • 최근 검색 결과 기반 제품 추천

03. 세션(Session)

  • 비밀번호 등 클라이언트 인증 정보를 서버 측에 저장하고 관리
  • 로그인 요청에 대한 응답 작성 시, 인증 정보는 서버에 저장하고 클라이언트 식별자인 JSESSIONID를 쿠키에 담음
  • 클라이언트는 매 요청마다 JSESSIONID 쿠키를 함께 전송, 서버는 JSESSIONID를 통해 클라이언트 식별
  • 장점
    • 쿠키를 포함한 요청이 외부에 노출되어도 세션 ID 자체에는 중요한 개인 정보를 담지 않음
    • 각 사용자마다 고유한 세션 ID가 발급됨, 요청 마다 회원 정보 확인 필요 없음
  • 단점
    • 해커가 세션 ID 탈취하여 특정 클라이언트로 위장 가능
    • 요청이 많아지면 서버 부하가 생김

04. 세션만 쓰면 되는데 쿠키를 왜 사용해야 하는가?

💡 세션이 쿠키에 비해 보안도 좋은데, 쿠키를 사용하는 이유는 다음과 같다
  • 세션은 서버에 저장되고, 서버 자원사용하기에 사용자가 몰리면 소모되는 자원이 상당함
  • 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여 서버의 자원 낭비 방지
  • 서버에 저장된 사용자 세션 정보를 통해 다음 프로세스 진행을 막을 수 있음
    • 세션 값 획득 → 값 체크(validation) → 로그아웃(logout)

05. 쿠키 세션 차이

쿠키(Cookie) 세션(Session)

  쿠키(Cookie) 세션(Session)
저장 위치 클라이언트(=접속자 PC) 웹 서버
저장 형식 Text Object
만료 시점 쿠키 저장시 설정(브라우저 종료되도, 만료시점 안 지나면 자동 삭제 안됨) 브라우저 종료시 삭제(기간 지정 가능)
사용하는 자원(리소스) 클라이언트 리소스 웹 서버 리소스
용량 제한 - 총 300개
- 하나의 도메인 당 20개
- 하나의 쿠키 당 4KB(=4096 byte)
서버가 허용하는 한 용량 제한 없음
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋음

99. 참고 자료

 

쿠키, 세션, 토큰(JWT) 몰라도 괜찮겠어?

깔끔하게 정리했으니 몇 분만 투자해서 이번 기회에 바로 알고 가기 😀

velog.io

 

 

쿠키(Cookie)와 세션(Session)을 이용한 로그인

쿠키(Cookie)와 세션(Session) 동아리 프로젝트 기획 단계에서 '로그인 기능을 어떠한 방식으로 구현하는 것이 효율적일까?' 라는 생각을 하게 되어, OAuth, JWT 등 여러 방법들 중에서도 쿠키와 세션을

itstory1592.tistory.com

 

쿠키(Cookie), 세션(Session) 특징 및 차이

개요 > 쿠키(Cookie), 세션(Session) 각각 특성 및 차이 확실히 분류하기 메모 1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것(?) 2. 차이점 : 저장위치, 저장형

hahahoho5915.tistory.com

 

블로그의 정보

기록하고, 복기하고

ymkim

활동하기