HttpOnly 쿠키

HttpOnly 쿠키

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

스코프

DomainPath 디렉티브는 쿠키의 스코프를 정의한다.

Domain은 쿠키가 전송되게 할 호스트를 명시한다. 디폴트값은 현재 문서 위치의 호스트 일부를 기본값으로 한다.

예를 들어, 도메인이 mozilla.org으로 설정된 경우 해당 쿠키는 mozilla.org 뿐만 아니라 subdomain.mozilla.org, another.subdomain.mozilla.org와 같은 서브도메인에서도 유효하게 된다. 그러나 도메인이 명시되지 않은 경우에는 현재 호스트가 기본값으로 적용되며, 이 경우에는 서브도메인이 포함되지 않는다. 따라서 해당 쿠키는 mozilla.org에서만 유효하고 서브도메인에서는 사용되지 않는다.

반대로 Path의 경우, 값을 명시하지 않으면(혹은 "/"로 설정하면) 해당 도메인의 모든 페이지에서 사용 가능하다. 특정 경로로 제한하려면 해당 경로를 명시적으로 설정해야 한다.

예를 들어, Path=docs로 설정하면 쿠키는 /docs, /docs/Web/, /docs/Web/HTTP 같은 모든 하위 경로에서만 사용할 수 있다.