쿠키(Cookie)란?
HTTP는 요청과 응답을 교환한 후 서버 연결을 끊는 무상태 프로토콜입니다. 이는 서버가 새 요청을 수신해도 이전 요청을 기억하지 않는다는 것을 의미한다. 이 문제를 해결하기 위한 한 가지 방식은 모든 요청에 사용자 정보를 포함하는 것입니다. 그러나 이 방법은 보안 위험을 초래하고 개발이 복잡해진다.
쿠키는 이 문제에 대한 해결책을 제공한다. 이는 웹 서버에서 사용자 브라우저로 전송되는 작은 데이터 조각으로, 일반적으로 키=값 형식이다. 브라우저는 이러한 쿠키를 저장했다가 동일한 웹사이트를 다시 요청할 때 서버로 다시 전송한다.
쿠키에 흐름
- 서버에서 set-cookie에 정보(key, values로 구성)를 저장한 뒤 웹 브라우저 내부에 해당 쿠키를 쿠키 저장소에 저장한다.
- 브라우저는 이후에 서버에 요청을 보낼 때 마다 쿠키 저장소에서 쿠키를 조회해서, Cookie헤더를 통해 함께 보낸다.
HTTP Cookie 파라미터
1. 쿠키의 생명주기
expires와 max-age를 통해 만료일을 설정할 수 있다.
expires
- GMT를 기준으로 작성해야 된다.
- 구체적인 날짜를 작성해야 된다.
- 해당일이 지나면 쿠키 삭제
max-age
- 0이나 음수를 지정하면 쿠키 삭제
- 살아있을 시간을 초 단위로 설정
세션 쿠키: 만료 날짜를 생략하면 브라우저 종료까지만 유지
영속 쿠키: 만료 날짜를 입력하면 입력한 날짜까지 유지
2. 쿠키 path(경로)
특정 경로에서만 쿠키를 활성화 시키는 속성 경로를 path=/hello로 cookie를 설정했다면, */hello와 */hello/모든 하위경로는 cookie가 저장되어 확인 할 수 있지만, 그외 다른 경로(/hello를 제외한)의 경우 cookie를 확인 할 수 없다.
3. 쿠키 domain(도메인)
내가 만든 쿠키가 아무 사이트에나 막 들어가면 난감하다. 따라서 쿠키가 전송되어질 도메인을 지정하는 속성이다.
domain특징
- 도메인을 설정할 경우 해당 도메인 및 하위 도메인에서만 쿠키에 접근할 수 있다.
- domain을 설정하지 않을 경우 현재 문서 기준 도메인만 적용
4. 쿠키 - 보안
기본적으로 쿠키는 http, https를 구분하지 않고 전송한다.
4-1. secure
- Secure를 적용하면 https인 경우에만 전송
4-2. httpOnly
- HTTP 전송에만 사용
- 자바스크립트로 document.cookie에 접근하여 쿠키 접근을 제한한다.
- 즉 자바스크립트로 쿠키를 탈취할 수 없으며, XSS 공격 방지한다.
4-3. SameSite
- XSRF 공격 방지
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 전송하도록 제한을 둘 수 있다.
참조: 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한
'HTTP' 카테고리의 다른 글
[HTTP] 프록시(Proxy) 캐시 서버 (0) | 2024.03.18 |
---|---|
[HTTP] HTTP 헤더 캐시 이해하기 (1) | 2024.03.18 |
[HTTP] HTTP Header - 개념, 표현 헤더, 협상 (0) | 2024.03.13 |
[HTTP] 상태 코드 - 상태 코드는 왜 필요할까? 및 종류 (0) | 2024.03.12 |
[HTTP] 웹 브라우저 요청 흐름 (0) | 2024.03.12 |