쿠키

바그다드·2023년 3월 11일
0

Set-Cookie = 서버에서 클라이언트로 쿠키 전달(응답)
Cookie = 서버에게 받은 쿠키를 클라이언트가 HTTP요청시 전달

  • ex) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure

사용처

  • 로그인 세션 관리
  • 광고 정보 트래킹

1. 특징

  • 쿠키 정보는 항상 서버에 전송됨
    • 트래픽 추가 유발
    • 때문에 최소한의 정보만 사용
    • 서버에 전송하지 않고 내부에 데이터를 저장하고 싶으면 웹 스토리지 참고
  • 보안에 민감한 데이터는 저장하면 안됨

2. 필요성

  • http는 stateless이기 때문에 연결이 끊어지면 같은 클라이언트의 재요청이더라도 이전 요청은 기억하지 못함

  • 쿠키 없이 로그인을 유지하려면 매요청마다 사용자 정보를 포함해야함

  • 쿠키를 사용한 경우
    1. 서버에 로그인
    2. 서버에서 쿠키를 생성하고 클라이언트에 쿠키 전송
    3. 클라이언트는 쿠키를 저장소에 저장
    4. 재요청 시에 클라이언트는 쿠키를 서버에 전송
    5. 서버는 쿠키를 확인하고 로그인 상태 유지

쿠키 생명주기

  • ex) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure

1. 영속 쿠키

  • 만료일이 되면 쿠키 삭제
  • Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT

2. 세션 쿠키

  • 지정된 시간이 끝나면 삭제
  • Set-Cookie: max-age=3600 (3600초)

쿠키 도메인

  • ex) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure
  • 명시한 도메인과 서브 도메인도 쿠키에 접근이 가능
  • 생략 시 명시한 도메인에만 적용
  • ex) domain=example.org

쿠키 경로

  • ex) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure
  • 명시한 경로와 하위 경로 페이지만 쿠키에 접근 가능
  • 일반적으로는 'path=/' 루트로 지정

쿠키 보안

  • ex) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure

1. Secure

  • 원래는 http, https구분 없이 전송
  • 적용 시 https인 경우에만 전송

2. HttpOnly

  • 자바스크립트에서 접근 불가
  • Http 전송에만 사용
  • XSS 공격 방지

3. SameSite

  • 요청 도메인과 쿠키에 설정된 도메인이 같을 때만 전송
  • XSRF 공격 방지

출처 : 링크텍스트

profile
꾸준히 하자!

0개의 댓글