PangLog
PangLog_k.k
PangLog
전체 방문자
오늘
어제
  • Category (77)
    • 💾기록 (2)
      • 📔기록 (2)
    • 🔧알고리즘 (10)
    • ⚡AI (17)
      • ∃Mathematics (11)
      • AI (5)
      • 논문 (1)
    • 👨‍💻Data Science (2)
    • 📚CS (4)
      • 📡컴퓨터 네트워크 (3)
      • 💾DB (0)
      • ⚙OS (1)
    • ⌨Programming (15)
      • Python (6)
      • Pytorch (3)
      • FastAPI (0)
      • Java (1)
      • Spring (3)
      • Elastic Search (2)
    • 💻 (23)
      • Git (9)
      • Issue sol (2)
      • Linux (2)
      • etc (7)
      • Web (2)
      • Docker (1)
    • 📰칼럼 (4)
      • IT (4)
      • 그 외 (0)
    • Review (0)

블로그 메뉴

  • 홈
  • Github

인기 글

최근 글

태그

  • Java
  • 파이썬
  • inference
  • 알고리즘
  • Python
  • 백준허브 에러
  • 깃허브
  • 외부단편화
  • 탐색적 데이터 분석
  • 11660
  • Jupyter Lab
  • pycham
  • cv2
  • cors
  • URL URI 차이
  • 백준허브 이슈
  • 프로그래머스
  • BOJ
  • SWEA
  • 백준허브
  • 프로그래머스 체육복
  • 쥬피터랩
  • 인퍼런스
  • 내부단편화
  • K-디지털트레이닝 해커톤
  • 5215
  • 옹알이(1)
  • 백준
  • 파이참
  • 자바
hELLO · Designed By 정상우.
PangLog

PangLog_k.k

📚CS/📡컴퓨터 네트워크

쿠키와 세션(Cookie & Session)

2022. 10. 3. 19:12

Cookie & Session


  • Session & Cookie은 왜 사용하는가 ?
    • Http protocol의 약점을 보완하기 위한 도구들
  • http protocol 특징
    • 서버는 요청에 대한 처리를 한 후 클라이언트에 응답을 하고 불필요한 지속적 연결로 인한 자원낭비를 줄이기 위해 연결을 해제한다(stateless)
    • 그러나 로그인정보같이 클라이언트와 서버가 연결 상태를 유지해야하는 경우가 있는데 이 때 클라이언트 단위로 상태 정보를 유지하기 위해 Cookie와 Session이 사용된다

Cookie란?

  • 서버에서 사용자의 컴퓨터에 저장하는 정보파일
  • 사용자가 별도의 요청을 하지 않아도 브라우저는 request시 Request Header를 넣어 자동으로 서버에 전송
  • key & value 쌍으로 구성되어있다
  • 서버에서는 브라우저가 다르면 다른 사용자로 인식하기에 브라우저마다 저장되는 쿠키가 다르다

Cookie의 사용 목적

  • 세션관리 : 사용자의 아이디, 접속시간, 장바구니 등 서버가 알아야 할 정보 저장
  • 개인화 : 사용자마다 적절한 페이지를 보여줄 수 있다
  • 트래킹 : 사용자의 행동과 패턴을 분석하고 기록

Cookie 사용 예

  • ID 저장, n일간 다시 보지 않기, 최근 검색한 내용을 바탕으로 광고 추천, 쇼핑몰 장바구니

Cookie의 구성요소 및 특징

  • 이름 : 여러 개의 쿠키가 client의 컴퓨터에 저장되므로 각 쿠키를 구별하는데 사용되는 ㅣㅇ름
  • 값 : 쿠키의 이름과 매핑되는 값
  • 유효기간 : 쿠키의 유효기간
  • 도메인 : 쿠키를 전송할 도메인
  • 경로 : 쿠키를 전송할 요청 경로
  • 클라이언트에 총 300개의 쿠키를 저장할 수 있다
  • 하나의 도메인 당 20개의 쿠키를 가질 수 있다
  • 하나의 쿠키는 4KB까지 저장 가능하다

Cookie 동작 순서

Client의 페이지 요청 -> WAS가 쿠키 생성 -> HTTP Header에 쿠키를 넣어 응답 -> 브라우저는 넘겨받은 쿠키를 PC에 저장하고 다시 WAS가 요청할 때 요청과 함께 쿠키를 전송 -> 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우 요청 페이지와 함께 쿠키를 전송(브라우저가 종료되어도 쿠키의 만료기간이 남아 있다면 클라이언트는 계속 보관)

Cookie 사용 메서드

//쿠키 생성
Cookie cookie = new Cookie("name", "value");
//쿠키 값 변경 및 얻기
cookie.setValue("setting value");
String value = cookie.getValue();
// 초단위로 설정
cookie.setMaxAge(60 * 60);
// 유효기간을 0으로 만들어 삭제
cookie.setMaxAge(0);
//생성된 쿠키를 client에 전송
response.addCookie(cookie);
// client에 저장된 cookie 얻기
Cookie cookies[] = request.getCookies();

Session이란 ?

  • 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 이를 세션이라 함
  • WAS 메모리에 Object의 형태로 저장
  • 메모리가 허용하는 용량까지 제한 없이 저장 가능

Session 사용 예

  • 사이트 내에서 화면을 이동해도 로그인이 풀리지 않고 유지
  • 장바구니 등

Session의 동작 순서

클라이언트가 페이지를 요청 -> 서버는 접근한 클라이언트의 Request-header필드인 쿠키를 확인하여 클라이언트가 해당 session-id를 보냈는지 확인 -> session-id가 존재하지 않는다면 서버는 session-id를 생성해 클라이언트에게 돌려준다 -> 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장(cookie name : JSESSIONID) -> 클라이언트는 재 접속시 이 쿠키(JSESSIONID)를 이용해 session-id값을 서버에 전달

session 특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
  • 웹 서버에 저장되는 쿠키(=세션 쿠키)
  • 브라우저를 닫거나 서버에서 세션을 삭제 했을 때만 삭제되므로 쿠키보다 보안이 우세하다
  • 저장 데이터에 제한이 없다
  • 각 클라이언트 고유 세션 아이디를 부여한다
  • 세션 아이디로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스 제공
  • ID나 이름 닉네임과 같이 로그인 했을 때 자주 사용되는 정보를 session에 저장하면 DB를 접근할 필요가 없으므로 효율적이다

HttpSession관련 메서드

// 세션 생성
		HttpSession session = request.getSession();
		// 값 저장
		session.setAttribute("name", objectValue);
		// 값 얻기
		Object obj = session.getAttribute("name");
		// 값 제거(모두 제거, 특정 이름의 속성 제거)
		session.invalidate();
		session.removeAttribute("name");

Session과 Cookie의 차이

  • 가장 큰 차이점은 세션은 서버의 자원을 사용하여 저장하고 쿠키는 서버의 자원을 사용하지 않는다
  • 쿠키는 클라이언트 PC에 저장되기에 변질되거나 보안측에서 취약할 수 있다
  • 세션은 쿠키를 사용해 session-id만을 저장하므로 비교적 보안이 높다
  • 쿠키는 쿠키에 정보가 있기에 서버에서 요청시 속도가 빠르고 세션은 정보가 서버에 있기에 쿠키에 비해 비교적 느린 속도를 가진다
  • 이러한 차이점으로 인해 쿠키와 세션을 적절히 활용하여 서버의 자원 낭비를 방지하고 웹 사이트의 속도를 높이는 것을 목표로 한다

Session과 Cookie 정리

SessionCookie

Type javax.servlet.http.HttpSession(Interface) javax.servlet.http.Cookie(Class)
저장 위치 서버의 메모리에 Object로 저장 클라이언트 PC에 file로 저장
저장형식 Object String
사용 예시 로그인 시 사용자 정보, 장바구니 등 아이디저장, n일 그만 보기
용량제한 x 도메인당 20개, 쿠키당 4KB
만료시점 알 수 없음(Client가 로그아웃 하거나, 이정 시간동안 session에 접근 하지 않을 경우[만료 시간은 web.xml에 설정]) 쿠키 저장 시 설정(미설정시 브라우저 종료시 만료)
공통 전역에 저장하기에 프로젝트 내의 모든 JSP에서 사용가능  
  Map형식으로 관리하기 때문에 key값의 중복을 허용하지 않음  
반응형
저작자표시 비영리 변경금지 (새창열림)

'📚CS > 📡컴퓨터 네트워크' 카테고리의 다른 글

컴퓨터 네트워크 #2(네트워크의 기본 규칙)  (0) 2022.01.04
컴퓨터 네트워크 #1(네트워크 기본지식)  (0) 2022.01.04
    '📚CS/📡컴퓨터 네트워크' 카테고리의 다른 글
    • 컴퓨터 네트워크 #2(네트워크의 기본 규칙)
    • 컴퓨터 네트워크 #1(네트워크 기본지식)
    PangLog
    PangLog

    티스토리툴바