Cookie & Session

연결 지향 vs. 비연결 지향

  프로토콜 서비스
연결 지향 * 연결을 유지하는 것을 지향하는 프로토콜
* 연결 유지 비용이 발생
* 이미 연결되어 있기 때문에 데이터의 출처를 알 수 있음
*패킷이 연결 설정된 이후 전송
비연결 지향 * 연결을 유지하지 않는 프로토콜
* 연결을 유지 비용이 들지 않음
* 매 연결 시 자신이 누구인지 알려줘야 함
*패킷이 연결 설정/해체 필요없이 전송

HTTP의 약점

  • connectionless
    • 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징
    • 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊음
    • 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용
      • HTTP1.1 디폴트
  • stateless
    • 통신이 끝나면 상태를 유지하지 않는 특징
    • 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않음
  • 클라이언트(브라우저)의 로컬에 저장되는 키와 값이 내장된 데이터 파일
  • 사용자 인증이 유효한 시간을 명시
    • 브라우저가 종료되어도 인증이 유지됨
  • 클라이언트의 상태 정보를 저장했다가 필요할 때 참조
  • 쿠키의 요소

    요소 내용
    이름 각각의 쿠키를 구별하는 데 사용되는 이름
    쿠키의 이름과 관련된 값
    유효시간 쿠키의 유지시간
    도메인 쿠키를 전송할 도메인
    경로 쿠키를 전송할 요청 경로
  • 쿠키 동작 방식
    1. 클라이언트가 서버에 페이지를 요청
    2. 서버가 쿠키를 생성
    3. HTTP헤더에 쿠키를 포함 시켜 클라이언트 요청에 응답
    4. 클라이언트의 브라우저가 종료되어도 쿠키 만료 시간에 따라 로컬에 저장
    5. 클라이언트가 서버에 같은 요청을 할 경우 클라이언트는 HTTP 헤더에 쿠키를 함께 서버로 보냄
    6. 서버가 클라이언트에게서 받은 쿠키를 읽고 업데이트가 필요한 경우 수정하여 클라이언트에게 응답
  • 쿠키 사용 예시
    1. 로그인 시 아이디 비밀번호 저장
    2. 쇼핑몰의 장바구니 기능
    3. 오늘 더 이 창을 보지 않음 기능

Session 세션

  • 쿠키 기반이지만 서버에서 관리
  • 클라이언트의 Request에 대한 응답으로 서버 엔진이 클라이언트에 유일한 ID를 부여
    • 서버가 각 클라이언트를 구분하기 위해 세션 ID를 부여
  • 클라이언트가 서버에 접속하고 있는 동안 세션의 인증상태를 유지
    • 일정 시간 이상 응답이 없다면 세션을 만료시킬 수 있음
  • 정보가 서버에 보관되어 쿠키보다 보안에 유리하나, 사용자가 많을수록 서버 메모리에 부담
  • 세션의 동작 방식
    1. 클라이언트가 서버에 접속 시 세션 ID를 받음
    2. 클라이언트는 세션 ID에 대해 쿠키를 사용해 저장
    3. 클라이언트가 서버에 요청할 때, 쿠키에 있는 세션 ID를 서버에 전달
    4. 서버는 세션 ID를 전달받아, 세션 ID에 해당하는 세션에 있는 클라이언트 정보를 사용
    5. 클라이언트 정보를 통해 서버 요청을 처리한 뒤 클라이언트에 응답
  • 세션 사용의 예
    • 로그인과 같은 보안 상 중요한 작업을 수행할 때 사용

쿠키 vs. 세션

  • 세션이 쿠키를 사용하기 때문에, 기본적으로 유사

      쿠키 Cookie 세션 Session
    보안 클라이언트에 저장되므로 변질되거나 Snipping을 당할 우려, 상대적으로 취약 로컬에 session id만 저장하고 서버에서 작업하므로 상대적으로 안전
    요청 속도 로컬에 정보가 있기 때문에 빠름 서버에 저장되어 서버 처리가 필요해 느림
    라이프 사이클 로컬에 파일로 저장되어 브라우저를 종료해도 정보를 유지 만료시간을 정할 수 있으나, 클라이언트의 브라우저가 종료되면 이와 상관없이 삭제

캐시 vs. 쿠키/세션

  • 캐시는 이미지, css, js 파일 등을 브라우저나 서버 앞 단에 저장해놓고 사용
  • 한번 캐시에 저장되면 브라우저를 참조하기 때문에 서버에서 변경되더라도 사용자는 변경되지 않을 수 있음

출처