Name - 쿠키 이름
Value - 쿠키 내용 값
Domain
간단하게 말해 도메인은 쿠키에 접근이 가능한 도메인을 의미한다. 몇가지 제약이 있는데 아래와 같으며 이런 제약이 있는 이유는 안정성을 높이기 위해 만들어졌다.
.winnie.com
이라고 하더라도 sub.winnie.com
으로 설정된 쿠키에는 접근이 불가하다. 간략하게 설명하자면 서브 도메인이나 다른 도메인의 쿠키를 전송 받을 수 없다..winnie.com
과 winnie.com
모두 작동이 가능하나 하위 호완성을 위해 .을 붙이는 표기법을 사용하는 것이 좋다.Path
URL path(경로)로 지정된 경로 혹은 하위 경로 페이지에 접근 했을 때만 해당 쿠키를 사용할 수 있다. 절대 경로여야 하며 미지정시 기본값은 현재 페이지(경로)로 설정된다. 즉, 모든 페이지에서 사용이 가능함을 뜻한다.
쉽게 예시로 들자면 만약 쿠키의 path가 /account
page로 설정되어있다면 /account/signin
에서 확인이 가능하지만 /mypage
에서는 확인이 불가하다.
Expires / Max-age
exipries
는 유효일자를 뜻하며 Max-age
는 만료일을 뜻한다. 두 옵션 중 하나라도 설정되지 않으면 브라우저가 닫힐 때 쿠키도 삭제된다. 이러한 쿠키를 Session Cookie 를 말하며 Expires / Max-age
에 Session
이라고 표기된다.
Size - cookie 사이즈를 말하며 byte 단위이다.
HttpOnly
만에하나 해커가 악의적으로 페이지에 코드를 삽입하여 사용자가 웹페이지에 방문할 때 document
를 통하여 확인 및 조작할 수 있으며 해커의 코드도 실행이 될 수 있다.
이 옵션을 설정할 경우 설정된 쿠키는 document
로 쿠키 정보를 읽을 수 없기 때문에 쿠키를 보호할 수 있다.
Secure
해당 옵션을 설정할 경우 HTTPS
프로토콜의 통신하는 경우에만 쿠키가 전송되며 만약 옵션이 지정되지 않을 경우 HTTP
, HTTPS
에서 모두 쿠키를 읽을 수 있다.
이러한 옵션이 있는 이유는 쿠키는 기본적으로 도메인만 확인하고 프로토콜에 제약이 없기 때문이다.
SameSite
보안 속성중 하나로 XSRF 공격
을 막기위해 만들어진 옵션이다. 이 옵션을 사용하지 않을 경우 XSRF 보호 토큰
특수 필드를 만들어 악의적으로 탈취하기 위해 사용되더라도 토큰이 없기 때문에 대비할 수 있다. 하지만 가장 큰 단점은 구현 시간이 오래 걸리며 모든 요청을 전부 검사하며 모든 <form />
에 보호 토큰을 셋팅해주어야한다.
하지만 SameSite 옵션을 이용하면 보다 효율적으로 XSRF 공격
을 막을 수 있다. 다만 오래된 브라우저에서는 이 옵션을 지원하지 않는 점이 있다. 따라서 이 옵션을 이용할 경우 구식 브라우저를 제외한 보안 문제를 해결할 수 있다.
SameSite는 총 두가지의 옵션이 있으며 아래와 같다.
strict
옵션
사용자가 사이트 외부에서 요청을 보낼 때 SameSite
옵션에 strict
로 설정되어 있을 경우 쿠키는 절대 외부에 유출되지 않는다.
lax
옵션
UX를 영향을 주지 않으며 XSRF 공격을 막을 수 있는 접근법이다. SameSite 옵션은 사이트 외부에서 요청을 보낼 때 브라우저가 쿠키를 전송하는 것을 막지만 항상 예외사항은 있기 마련이며 아래의 두가지일 경우 전송된다.
외부 사이트가 아닌 로컬에 저장된 링크를 통해서도 접근이 가능하며 외부사이트에서 ajax요청을 보내거나 등의 복잡한 시도가 아니라면 가능하다.