Cookie Policy
Cookie Policy
Cookie policy란 Browser 측에서 실행되는 규칙으로
1. Cookie를 서버로부터 받을 때
2. Cookie를 request에 포함해 서버로 보낼 때
아무 Cookie나 저장하고 아무 데나 Cookie를 보낼 수는 없기 때문에 이와 관련하여
Cookie를 저장하고 보내는 과정(store & send)에서 만족돼야 하는 조건
을 정의한다.
Cookie Policy가 무엇인지 알아보기 전에 Cookie가 어떻게 생겼는지에 대해 먼저 살펴보자.
기본적으로 Cookie는 "name-value pair" 형태이다.
name | Theme |
value | Dark |
Domain | toon.sec.org |
path | /cryptography |
secure | True |
httpOlny | false |
expire | 12 Aug 2022 20:00:00 |
위와 같은 cookie가 있다고 할 때 각각의 속성이 나타내는 의미는 다음과 같다.
1) name = theme :: theme이라는 이름의 쿠키가 있는데
2) value = Dark :: theme cookie의 값은 Dark이다.
3) Domain = toon.sec.org & path = /cryptography ::
toon.sec.org/cryptography로 request를 보낼 때, 이 cookie를 같이 보낸다.
4) secure = True :: request를 보내는 protocol이 HTTPS여야만 이 cookie를 보낼 수 있다.
5) httpOnly = False :: javascript로 이 cookie에 접근이 가능하다.
6) expire :: 8/12/22 20시가 지나면 이 cookie는 자동으로 삭제된다.
** 여기서 cookie policy와 관련되는 속성은 domain & path이다.
Cookie가 어떻게 생겼는 지 알아봤으니 이제 Cookie policy에 대해 살펴보자.
cookie는 서버에서 만들어서 브라우저에게 전달되고 브라우저는 cookie jar에 cookie를 넣어 보관하다
관련 요청을 만들어 보낼 때 자동으로 쿠키를 요청에 함께 넣어서 서버로 전달한다고 했다.
2023.04.02 - [Daily-Note/web] - Cookie & Session & Token
Cookie & Session & Token
Cookie cookie에 대해 살펴보기 전에 cookie가 왜 필요한지에 대해 먼저 알아보도록 하자. web을 사용하다고 하면 Application layer에서는 HTTP(s) 프로토콜을 사용한다. HTTP의 특징 중 하나는 "Stateless protocol"
10halip1ap-47.tistory.com
이 과정에서 고려해야하는 부분이 크게 2가지 있다면,
첫 번째는 "서버가 보낸 쿠키를 저장할까 말까"이고
두 번째는 "서버에 요청 보낼 건데 이 쿠키 같이 보낼까 말까"이다.
각각의 상황에 대해 cookie policy에서는 다음과 같은 조건을 정의하고 있다.
store )
서버로부터 쿠키가 만들어져 왔을 때, 쿠키를 보낸 서버의 domain과 cookie의 domain 속성을 비교한다.
이때 서버는 cookie의 도메인이 자신의 도메인의 suffix가 되도록 cookie를 만들 수 있다.
** suffix = domain은 계층적인 구조를 가지는 데 suffix라 함은 전체 도메인 값 중 오른쪽 끝 값을 의미한다.
다시 말해 cookie의 도메인이 서버의 도메인 값에 포함되도록 설정할 수 있다는 것인데 예시를 보면,
:) server = mail.google.com인 경우, cookie domain = google.com으로 만들어질 수 있다.
:) server = google.com인 경우, cookie domain = google.com으로 만들어질 수 있다.
:) server = google.com인 경우, cookie domain = .com으로 만들어질 수 없다.
** 다만, cookie domain 값은 TLD일 수 없다.
2023.03.19 - [TryHackMe/Walkthroughs] - DNS in detail
DNS in detail
What is DNS DNS :: Domain Name System의 약자로, 복잡한 숫자(IP)를 기억할 필요 없이 인터넷상의 모든 장치와 통신할 수 있는 심플한 방법을 제공해 주는 시스템이다. 예를 들어 google에 접속하려는 사용
10halip1ap-47.tistory.com
서버의 Domain과 cookie domain을 비교해서 cookie domain이 server domain의 suffix임을 만족하면 브라우저는
이 쿠키를 저장하는 것이다.
Send )
쿠키를 request에 포함해 보낼 때는 store의 경우와 동일하게 domain을 비교하며 동시에,
path 값도 비교하게 된다.
Cookie Domain은 server의 Domain의 suffix여야한다는 조건에 더불어
Cookie path는 server path의 prefix여야 한다는 조건이 추가된다.
** prefix = suffix와 반대로 path 값의 맨 왼쪽 부분을 의미한다.
"https://toon.sec.org/cryptography/oneshots/~~.html"이라는 서버에 앞에서 살펴본 쿠키를 보낸다고 하면,
cookie의 domain이 toon.sec.org이고 path가 /cryptography이기 때문에 이 request에는 쿠키를 포함할 수 있다.
하지만 "https://toon.sec.org/bufferoverflow/..."이라는 서버에 동일한 쿠키를 보낸다고 하면,
cookie의 domain과 서버의 domain은 일치하지만 path가 /bufferoverflow & /cryptography로 다르기 때문에
이 request에는 쿠키가 포함되지 않는다.