짹뚜 스튜디오

[네트워크] Cookie 본문

개발 공부/네트워크

[네트워크] Cookie

짹뚜 2022. 2. 17. 20:14

http의 특징 중 하나가 stateless이다. 즉 서버가 클라이언트의 이전 상태를 보존하고 있지 않는다. 다음과 같은 대화를 보면 stateless를 좀 더 쉽게 이해할 수 있다.

A: 치킨 한 마리에 얼마인가요?
B: 만원입니다.

A: 그럼 2마리 주세요.
B: 뭐를 2마리 줄까요?

 

그런데 '오늘 하루 동안 이 팝업창 보지 않기'에 체크를 하고 다시 같은 사이트에 접속을 하면 팝업창이 진짜로 보이지 않는다. 이처럼 이전 상태를 저장해주는 방법 중 하나가 cookie이다.

cookie 말고 session과 token도 있다.

Cookie

쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나이다. 서버에서 응답을 할 때 쿠키를 설정해준다. 그 이후로 만약에 쿠키가 클라이언트에 존재한다면 클라이언트의 매 요청마다 쿠키가 자동으로 추가되어서 보내진다.

 

쿠키에 개인의 데이터를 저장하다 보니 이러한 정보를 보호하기 위해서 보안 설정을 해줄 수가 있다. 쿠키에 옵션을 설정해서 특정 조건들을 만족했을 때만 쿠키를 전송하게 할 수 있다.

Domain

Domain을 설정하면 해당 Domain을 대상으로 한 요청에만 쿠키가 전송된다. (Domain = google.com, localhost 등등)

Path

Path란 세부 경로를 의미하며 http://localhost/api/v1에서 Path는 /api/v1을 의미한다. 요청하는 경로에 Path로 지정한 세부 경로가 있는 경우에만 쿠키가 전송된다.

 

만약 Path를 지정하지 않으면 기본으로 / 로 설정된다.

MaxAge 또는 Expires

쿠키가 유효한 기간을 정한다.

 

MaxAge는 앞으로 몇 초 동안 쿠키가 유효한지 설정하고 Expires는 언제까지 유효한지 날짜 (Date)로 설정한다. 설정된 시간 또는 날짜가 지나면 자동으로 쿠키가 삭제된다.

 

아무런 옵션을 주지 않으면 클라이언트 (브라우저)가 종료되어야만 쿠키가 삭제된다.

Secure

Secure 옵션이 true로 설정되어있으면 HTTPS 프로토콜을 이용하여 통신하는 경우에만 쿠키가 전송된다.

HttpOnly

쿠키는 자바스크립트로 접근이 가능하다. 그래서 XSS (Cross Site Scripting) 공격을 통해 쿠키에 저장되어있는 개인 정보들을 탈취할 수 있다. 이러한 공격을 방지하기 위해 HttpOnly 옵션을 true로 설정해서 자바스크립트에서 쿠키에 접근하는 것을 불가능하게 한다.

SameSite

cross-origin 요청을 받은 경우 SameSite 정책에 따라 서버의 쿠키 전송 여부를 결정한다.

 

  • None: 항상 쿠키를 전송한다. 단, Secure 옵션이 필요하다.
  • Strict: SameSite인 경우에만 쿠키 전송이 가능하다.
  • Lax: 'GET' 메서드에서만 쿠키 전송이 가능하다. 그 외의 요청은 Strict 정책과 동일하게 적용된다.

'개발 공부 > 네트워크' 카테고리의 다른 글

[네트워크] TCP vs UDP  (0) 2022.02.22
[네트워크] Internet Protocol  (0) 2022.02.22
[네트워크] HTTP  (0) 2022.02.03
[네트워크] Domain과 DNS  (0) 2022.01.26
[네트워크] IP 주소와 Port  (0) 2022.01.25
Comments