인증 Cookie / Session

mm11game·2021년 6월 11일
0

HTTP는 connectless, stateless기 때문에, 계속해서 인증절차를 처음부터 다시 해야하는 번거로움이 있다. 그래서 쿠키와 세션이 탄생했다.

  1. 개념
    클라이언트 로컬에 저장되는 키와 값이 들어있는 파일이다.
    이름, 값, 유호 시간, 경로 등을 포함하고 있다.
    클라이언트의 상태 정보를 브라우저에 저장하여 참조한다.
  2. 구성 요소
    쿠키의 이름(name)
    쿠키의 값(value)
    쿠키의 만료시간(Expires)
    쿠키를 전송할 도메인 이름(Domain)
    쿠키를 전송할 경로(Path)
    보안 연결 여부(Secure)
    HttpOnly 여부(HttpOnly)
  3. 동작 방식
    1. 웹브라우저가 서버에 요청

    2. 상태를 유지하고 싶은 값을 쿠키(cookie)로 생성

    3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송

    4. 전달받은 쿠키는 웹브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송

    5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답

  4. 쿠키 사용 예)
    아이디, 비밀번호 저장
    쇼핑몰 장바구니

Session

  1. 개념
    일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술이다.
    즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태이다.

  2. 동작 방식

    1. 웹브라우저가 서버에 요청
    2. 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(Session ID)를 부여함
    3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송
    4. 쿠키에 Session ID를 JSESSIONID 라는 이름으로 저장
    5. 웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송
    6. 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답
    7. 세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지한다.
      즉, 상태 정보를 유지하는 수단은 쿠키 이다.
  3. 세션 사용 예
    로그인

차이점

  1. 저장 위치
    쿠키 : 클라이언트
    세션 : 서버
  2. 보안
    쿠키 : 클라이언트에 저장되므로 보안에 취약하다.
    세션 : 쿠키를 이용해 Session ID만 저장하고 이 값으로 구분해서 서버에서 처리하므로 비교적 보안성이 좋다.
  3. 라이프사이클
    쿠키 : 만료시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있다.
    세션 : 만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
  4. 속도
    쿠키 : 클라이언트에 저장되어서 서버에 요청 시 빠르다.
    세션 : 실제 저장된 정보가 서버에 있으므로 서버의 처리가 필요해 쿠키보다 느리다.
profile
code newby

관심 있을 만한 포스트

0개의 댓글