쿠키는 서버에서 클라이언트에 영속성 있는 데이터를 저장하는 방법이다. 서버는 클라이언트의 쿠키를 이용하여 데이터를 가져올 수 있다. 그러므로 쿠키를 이용하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 다시 전송하는 것도 포함 된다.
도메인은 우리가 흔히 사용하는 www.google.com
과 같은 서버에 접속할 수 있는 이름이다. 쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않는다. 서브 도메인은 www
와 같은 도메인 앞에 추가로 작성되는 부분을 의미한다.
우리가 요청하 할 URL이 http://www.localhost.com:3000/users/login
이라고 한다면 도메인은 localhost.com
가 된다.
Path
는 세부 경로로 서버가 라우팅할 때 사용하는 경로이다.
만약 요청해야 하는 URL이 http://www.localhost.com:3000/users/login
인 경우라면 Path
는 /users/login
이 된다.
MaxAge
는 쿠키가 유효한 시간을 초 단위로 설정하는 옵션이다. 그리고 Expires
는 쿠키가 유요한 날을 지정해주는 옵션인다 옵션의 값은 클라이언트의 시간을 기준으로 한다. 지정한 날짜, 시간이 되면 쿠키는 자동으로 삭제된다. 쿠키는 위 옵션 여부에 따라 2가지로 나뉜다.
MaxAge
, Expires
옵션이 없는 쿠키로 브라우저가 실행 중일 때 사용할 수 있는 임시 쿠키이다. 브라우저를 종료하면 해당 쿠키는 삭제된다.MaxAge
, Expires
에서의 설정 옵션 만큼 유효한 쿠키이다.사용하는 프로토콜에 따른 쿠키의 전송 여부를 결정하는 옵션이다. 만약 Secure
옵션이 true
로 설정되있다면 HTTPS를 이용하는 경우에만 쿠키를 전송할 수 있다.
자바스크립트로 브라우저의 쿠키에 접근이 가능한지 여부를 결정한다. 만약 해당 옵션이 true
로 설정되있다면 자바스크립트로 쿠키에 접근이 불가능하다. 옵션을 설정하지 않았을 경우 자동으로 false
로 지정되는데 이 경우에는 document.cookie
롤 이용해 자바스크립트로 쿠키에 접근할 수 있으므로 보안에 매우 취약해진다.
Cross-Site 요청을 받은 경우 요청에서 사용한 메서드와 해당 옵션의 조합을 기준으로 서버의 쿠키 전송 여부를 결정하게 된다.
eTLD+1
이 다른 경우 Cross-Site로 구분된다. eTLD+1
은 .com
, .org
와 같이 도메인의 가장 마지막 부분을 TLD(Top Level Domain, 최상위 도메인)라고 하는데 이 최상위 도메인의 바로 왼쪽의 하위 레벨 도메인을 합한 것을 eTLD+1
이라고 한다. SameSite 옵션에서 사용할 수 있는 속성은 다음과 같다.
Secure
옵션이 필요하다.