Cookie & Session

yshjft·2022년 2월 10일
0

네트워크

목록 보기
1/18
post-custom-banner

✔︎ HTTP 프로토콜

  • connectionlessstateless가 특징이다.
  • 사용자에 대해서 알 수 있는 방법이 없다. 매번 인증을 다시해야하는 문제가 발생한다.
  • 따라서 상태를 유지하기 위해 쿠키와 세션을 사용한다.

✔︎ Cookie(쿠키)

  • 클라이언트 사이드에서 관리

  • 구성 요소

    • 쿠키 이름(name)

    • 쿠키의 값(value)

    • 쿠키의 만료 시간(Expires)

    • 쿠키를 전송할 도메인 이름(Domain)
      쿠키가 어떤 서버로 전송되어져야 하는지를 설정한다.

      domain = .jerry.com → jerry.com, www.jerry.com, dev.jerry.com에 쿠키 전달

    • 쿠키를 전송할 경로(Path)
      특정 디렉토리에서 쿠키가 사용되도록 한다.

      path = /subDir2/ →  localhost:8080/subDir2 또는 localhost:8080/subDir2/subDir3 과 같은 경로로 요청시에만 쿠키가 전송

    • 보안 연결 여부(Secure)
      HTTPS가 아닌 상황에서 쿠킨 전송 여부 설정

      true = HTTPS가 아닌 환경에서 cookie를 전송하지 않는다
      false = 기본값, HTTPS가 아닌 환경에서 cookie를 전송한다

    • HttpOnly(HttpOnly)
      브라우저에서 쿠키를 접근여부 설정

      true = 브라우저에서 쿠키에 접근할 수 없다
      false = 브라우저에서 쿠키에 접근할 수 있다

  • 동작 방식

    1. 브라우저가 서버에 요청
    2. 상태를 유지하고 싶은 값을 쿠키로 생성
    3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송
      Set-Cookie: id = jerry
    4. 전달 받은 쿠키는 브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송
      cookie: id = jerry
    5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인 후 응답
  • 보안에 취약

  • 만료시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있다.

✔︎ Session(세션)

  • 서버 사이드에서 관리

  • 브라우저를 통해 서버에 접속한 이후 브라우저를 종료할 때까지 유지되는 상태

  • 동작 방식

    1. 웹 브라우저가 서버에 요청

    2. 서버가 해당 웹브라우저에 유일한 ID(Session ID)를 부여함

    3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함하새 전송

      Set-Cookie: JSESSIONID=aslkf

    4. 브라우저는 이후 브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키(세션 쿠키)를 HTTP 헤더에 넣어서 전송

      Cookie: JSESSIONID=aslkf

    5. 서버는 세션 ID를 확인하고 해당 세션에 관련된 정보를 확인한 후 응답

  • 쿠키보다 보안성이 좋다

  • 만료시간을 정할 수는 있으나 브라우저를 종료하면 만료시간 상관 없이 삭제된다

✔︎ 참고

profile
꾸준히 나아가자 🐢
post-custom-banner

0개의 댓글