쿠키

2023. 2. 3. 09:17·CS 공부

쿠키 헤더

Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)

Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청 시 서버로 전달

 

쿠키가 필요한 이유

http는 무상태 프로토콜이기 때문에 클라이언트와 서버는 서로를 기억하지 않는다. 로그인 후 접속했을 때 사용자 정보를 보내지 않는다면 서버는 사용자 정보를 기억하지 못한다는 얘기다

 

이러한 문제의 대안으로 모든 요청과 링크에 사용자 정보를 포함하는 방법이 있다. 그러나 이러한 방식은 모든 요청에 정보가 포함되도록 개발해야 한다. 또한 브라우저를 완전히 종료하고 다시 열면 서버는 기억하지 않는다는 문제가 있다

이런 문제를 해결하기 위해 쿠키라는 개념이 등장했다

 

클라이언트가 정보를 포함해 요청하면 서버는 응답할때 Set-Cookie 헤더를 만들어서 응답한다 그러면 웹 브라우저 내부에는 쿠키 저장소가 있어 방금 서버가 준 쿠키를 저장한다

 

로그인 이후에 웹 브라우저가 다른 페이지에 들어가면 쿠키 저장소에서 적정한 쿠키를 가져와 서버에 쿠키를 보낸다.

쿠키는 모든 요청에 자동으로 포함된다


 

쿠키 사용처

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

 

쿠키 정보는 항상 서버에 전송되기 때문에 네트워크 트래픽 추가 유발 최소한의 정보만 사용

서버에 전송하지 않고, 웹 브라우저 내부에 데이터를 저장하고 싶으면 웹 스토리지 참고

 

주의! 보안에 민감한 정보는 절대 포함하지 말 것


 

쿠키 - 생명주기

Set-Cookie : expires = (GMT 날짜)

만료일이 되면 쿠키 삭제

 

Set-Cookie : max-age=3600

0이나 음수를 지정하면 쿠키 삭제

세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료 시 까지만 유지

영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지


 

쿠키 - 도메인

ex) domain=example.org

 

명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함

domain=example.org를 지정해서 쿠키를 생성한다면

dev.example.org도 쿠키 접근

 

생략 : 현재 문서 기준 도메인만 적용

example.org에서 쿠키를 생성하고 domain 지정을 생략한다면

dev.example.org 에서는 쿠키 미접근


쿠키 - 경로

예)path=/home

  • 이 경로를 포함한 하위 경로 페이지만 쿠키 접근
  • 일반적으로 path=/ 루트로 지정
  • /hello 는 쿠키 전달 불가능

쿠키 - 보안

Secure

쿠키는 http, https를 구분하지 않고 전송

Secure를 적용하면 https 인 경우에만 전송

 

SameSite

XSRF 공격 방지

요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송

'CS 공부' 카테고리의 다른 글

빌드와 배포  (0) 2023.02.27
‎‏개발자에게 필요한 필수 Linux 명령어  (0) 2023.02.24
Http 헤더와 BODY  (0) 2023.02.02
RESTful API란?  (0) 2023.01.30
CI / CD란?  (1) 2023.01.30
'CS 공부' 카테고리의 다른 글
  • 빌드와 배포
  • ‎‏개발자에게 필요한 필수 Linux 명령어
  • Http 헤더와 BODY
  • RESTful API란?
코딩숙
코딩숙
개발이라는 끝이 없는 바다 묵묵히 꾸준히 항해하기
  • 코딩숙
    코딩숙
    코딩숙
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • CS 공부 (17)
        • 클라우드 (3)
        • 네트워크 (3)
      • 개발 공부 (40)
        • 오류 해결 (4)
        • 알고리즘 (12)
        • Spring (3)
        • JPA (2)
        • TIL(오늘 내가 배운 것) (9)
        • 코드복습 (1)
        • 디자인 패턴 (1)
      • IT 관련 영상 메모 (1)
      • 데일리피드백 (0)
      • Tools (1)
      • Wishy (이력서 평가 프로젝트) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JPA
    appsmith
    404 Not Found
    개발공부
    http
    java
    302 Found
    도메인설계
    키 페어 분실
    백준
    변수
    user mode
    데이터베이스 손상
    innodb
    게임 맵 최단거리 자바
    isAfter()
    프로그래머스 네트워크 자바
    setter method
    programmers #정수 내림차순으로 배치하기
    데이터베이스 백업
    HTTP BODY
    getter method
    프로그래머스
    자바
    데이터 타입
    개발자
    isBefore()
    마이크로서비스
    키 페어 변경
    인프런
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
코딩숙
쿠키
상단으로

티스토리툴바