HttpOnly
쿠키는 웹 서버가 HTTP 응답 헤더를 통해 설정하는 쿠키이다. 해당 쿠키는 클라이언트 측에서 자바스크립트로 접근할 수 없고, 오직 HTTP 요청을 통해서만 서버로 전송된다.
서버에서 accessToken
이라는 쿠키를 httpOnly로 설정할 경우, 아래와 같이 해당 쿠키는 자바스크립트로 쿠키를 확인할 수 없다.
클라이언트에서 자바스크립트로 접근할 수 없기 때문에 Cross-site 스크립팅(XSS) 공격을 방지할 수 있다. 하지만 CSRF 공격에는 취약하다. CSRF 공격을 방지하기 위해서는 CSRF 토큰을 사용하는 것이 일반적이다. (form에 hidden 필드로 csrf 토큰 설정)
*CSRF: 사용자가 자신의 의지와는 무관하게 공격자가 준비한 요청을 서버에 보내게 하는 공격
Your App Is NOT Secure If You Don't Use CSRF Tokens
스코프
Domain
과 Path
디렉티브는 쿠키의 스코프를 정의한다.
Domain
은 쿠키가 전송되게 할 호스트를 명시한다. 디폴트값은 현재 문서 위치의 호스트 일부를 기본값으로 한다.
예를 들어, 도메인이 mozilla.org
으로 설정된 경우 해당 쿠키는 mozilla.org
뿐만 아니라 subdomain.mozilla.org
, another.subdomain.mozilla.org
와 같은 서브도메인에서도 유효하게 된다. 그러나 도메인이 명시되지 않은 경우에는 현재 호스트가 기본값으로 적용되며, 이 경우에는 서브도메인이 포함되지 않는다. 따라서 해당 쿠키는 mozilla.org
에서만 유효하고 서브도메인에서는 사용되지 않는다.
반대로 Path
의 경우, 값을 명시하지 않으면(혹은 "/"로 설정하면) 해당 도메인의 모든 페이지에서 사용 가능하다. 특정 경로로 제한하려면 해당 경로를 명시적으로 설정해야 한다.
예를 들어, Path=docs
로 설정하면 쿠키는 /docs
, /docs/Web/
, /docs/Web/HTTP
같은 모든 하위 경로에서만 사용할 수 있다.