쿠키 헤더
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 |