IT STUDY LOG

[HTTP] 01. Cookie 본문

devops bootcamp 4/개발 및 배포

[HTTP] 01. Cookie

roheerumi 2023. 3. 22. 11:02

# 학습 목표

  • 쿠키의 작동 원리를 이해할 수 있다

 


# 학습 내용

1.  Cookie

  • 개요
    • 서버에서 클라이언트에 데이터를 저장하는 방법의 하나
    • 서버와 클라이언트 양방향 전송
      • 최초 서버에서 전송 시 : Set-Cookie 프로퍼티에 쿠키 담아 전송
      • 이후 서버와 클라이언트 전송시 : Cookie 프로퍼티에 쿠키 담아 전송
  • 특징
    • 서버가 클라이언트에 데이터 저장 가능
    • 서버가 클라이언트로부터 쿠키를 가져올 때는 특정 조건들이 만족할 때만 가능
  • 쿠키 옵션
    옵션 설명
    Domain - 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않음
    (ex) http://www.localhost.com:3000/users/login의 경우 Domain은 localhost.com
    - 해당 옵션이 설정되어있다면 쿠키 도메인 옵션과 서버 도메인이 일치해야지만 쿠키 전송
    Path - 서버가 라우팅할 때 사용하는 경로 (default : /)
    (ex) http://www.localhost.com:3000/users/login의 경우 Path은 /users/login
    - 해당 옵션이 설정되어있는 경우 쿠키 서버 전송 가능
    (ex) Path가 /users/인 경우 경로가 /users/login/ 여도 전송 가능
    MaxAge or Expires - 쿠키의 유효 기간 관련 옵션
    - MaxAge : 앞으로 몇 초간 쿠키가 유효한지
    - Expires : 언제(Date 기준)까지 유효한지 지정
    - 해당 옵션이 지정되면 지정된 기간 초과시 쿠키 소멸
    - 해당 옵션이 없을 시 브라우저 탭이 종료되어야 쿠키 소멸
    Secure - 해당 옵션이 true로 지정되면 HTTPS 프로토콜에서만 쿠키 전송
    HttpOnly - 해당 옵션이 true로 지정되면 자바스크립트 브라우저에서 쿠키에 접근이 불가능
    SameSite - Cross-Origin 요청을 받은 경우 요청에서 사용한 메소드와 해당 옵션의 조합으로 서버의 쿠키 전송 여부를 결정
     > Lax : Cross-Origin 요청이면 'GET' 메소드에 대해서만 쿠키를 전송 가능
     > Strict : Cross-Origin이 아닌 same-site(요청 보낸 origin과 서버의 도메인이 같은 경우)인 경우에만 쿠키를 전송 가능
     > None: 항상 쿠키를 보내줄 수 있으나 Secure 옵션 필요
  • 쿠키를 이용한 상태 유지
    • 쿠키에 담은 정보로 Stateless 한 인터넷 연결을 Stateful 하게 유지 가능
    • 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험
    • 인증정보를 탈취하여 서버에 요청을 보낸다면 서버는 누가 요청을 보낸 건지 상관하지 않고 인증된 유저의 요청으로 취급하기 때문에, 개인 유저 정보 같은 민감한 정보에 접근이 가능
Comments