세션과 쿠키

김민창·2021년 10월 12일
0
post-thumbnail

HTTP Protocol

특징

  • 지속적인 연결로 자원낭비를 줄이기 위해 연결을 해제
  • 로그인을 하여 client와 server가 연결 상태를 유지해야하는 경우 문제가 발생
  • 비연결성(Connectionless)비상태성(Stateless)으로, 매번 새로운 사용자로 인식

동작과정

  1. client가 server에 요청
  2. server는 요청에 대해 처리한 뒤 client에 응답
  3. 응답 후 연결을 해제

HTTP Protocol의 약점을 보완하기 위해 세션과 쿠키를 사용


  • 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일
  • client에 저장하는 정보 파일
  • keyvalue로 구성되고 String 형태
  • 같은 사이트라도 브라우저마다 저장되는 Cookie는 다름
  • client에 약 300개의 Cookie 저장 가능
  • 한 도메인에 약 20개의 Cookie 저장 가능

Cookie의 사용 목적

  • 세션관리 -> 로그인 정보 등 서버가 알아야 하는 정보
  • 개인화 -> 사용자마다 사람에 적절한 페이지를 보여줄 수 있음
  • 트래킹 -> 사용자의 행동과 패턴을 분석하고 기록

Cookie의 사용 예시

  • 아이디/비밀번호 저장 후 자동로그인
  • 오늘은 다시보지 않기
  • (쇼핑몰) 오늘 본 상품
  • 최근 검색한 상품들을 광고에서 추천

Cookie의 구성요소

  • 이름
  • 유효기간
  • 도메인
  • 경로(path)

Cookie의 동작 순서

  1. Client가 페이지를 요청
  2. WAS가 Cookie를 생성
  3. HTTP Header에 Cookie를 넣어 응답
  4. Browser는 넘겨받은 Cookie를 PC에 저장 후, WAS가 재요청시 요청과 Cookie를 전송
  5. Cookie의 만료기간에 따라 Client는 Cookie를 계속 보관

Cookie의 단점

  • 방문한 웹 사이트에 대한 정보 및 개인정보가 기록되기 때문에 사생활을 침해할 소지가 있음
    * 이러한 문제를 해결하기 위해 웹 브라우저 자체에 Cookie 거부 기능이 있지만, Cookie 본래의 목적인 웹 브라우저의 연결을 지속시키는 기능을 수행할 수 없는 문제 발생
  • Server가 갖고 있는 것이 아니라, 사용자에게 저장되기 때문에, 임의로 고치거나 지울수 있고, 가로채기도 쉬워 보안이 취약

Session

Session 특징

  • 웹 브라우저당 1개씩 생성되어 웹 컨테이너에 저장되며, 브라우저 종료시 소멸
  • 로그아웃하면 새로운 사용자로 인식하여 새로운 세션이 생성
  • Server의 메모리에 Object 형태로 저장
  • 용량의 제한없이 저장 가능

Session의 사용 목적

  • Cookie의 단점을 보완하기 위해 사용

Session의 사용 예시

  • 로그인 후 로그인이 필요한 영역 탐색

Session의 동작 순서

  1. 클라이언트가 페이지를 요청
  2. 접근한 클라이언트의 Request-Header필드인 Cookie를 확인하여 클라이언트가 해당 session-id를 보냈는지 확인
  3. session-id가 존재하지 않는다면, 서버는 session-id를 생성해 클라이언트에게 돌려줌
  4. 서버에서 클라이언트로 돌려준 session-idCookie를 사용해 서버에 저장
  5. 클라이언트는 재접속 시, 서버에 받은 Cookie를 이용해 session-id값을 서버에 전달

Session의 단점

  • Cookie 보다 느림
  • Session은 서버에 저장되어 서버자원을 사용하기 때문에, 사용자가 많을 경우 소모되는 자원이 상당히 많음

CookieSession
저장위치클라이언트서버
저장형식textObject
리소스클라이언트의 리소스서버의 리소스
용량제한도메인당 20개, 1쿠키당 4KB제한 없음
만료시점쿠키 저장시 설정(설정 없을 시에는 브라우저 종료시 만료)알수 없음
profile
개발자 팡이

0개의 댓글