A. 자바스크립트로 document.cookie로 쿠키에 접근할 수 없게 된다.
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
위 예처럼 Cookie를 설정했다면 자바스크립트로는 접근이 안 된다.
실제 사례
아래 예(소스코드)를 보면 sessionid의 경우 HttpOnly인 상태인 것을 알 수 있다.
document.cookie로 sessionid를 얻으려고 확인해보면 값이 없는 것을 확인할 수 있다.
MDN 설명을 보자.
A cookie with the HttpOnly attribute is inaccessible to the JavaScript Document.cookie API; it's only sent to the server. For example, cookies that persist in server-side sessions don't need to be available to JavaScript and should have the HttpOnly attribute. This precaution helps mitigate cross-site scripting (XSS) attacks.
출처: MDN: Restric access to cookies
HttpOnly로 할 경우 서버에만 전송된다. 예를 들어 서버에서 세션을 관리하는 경우 굳이 클라이언트에서 자바스크립트로 세션을 관리할 필요가 없기 때문에 기본적으로 HttpOnly를 사용한다. 위 장고 예의 경우도 서버에서 세션을 관리하고 있어서 HttpOnly로 설정된 것이다. django_session 테이블에 sessionid 값이 저장된 것을 확인할 수 있다.
자바스크립트로 sessionid를 얻을 수 없으니 자바스크립트를 이용한 XSS 공격을 막는데 도움이 된다.