본문 바로가기

언어/Spring

[Spring] HttpOnly

HttpOnly는 언제 만들어졌나?


HttpOnly는 보안적인 이슈로 인해 2002년 Microsoft Internet Explorer 개발자에 의해 IE6 버전부터 출시 되었습니다.


HttpOnly란 무엇인가?


HttpOnly는 Set-Cookie HTTP response 헤더에 포함되는 추가적인 flag 입니다.

cookie를 생성할 때 HttpOnly flag를 사용하는것은 클라이언트 측의 스크립트가 감싸여진(보호된) 쿠키에 접근할때 위험을 완화시키는 역할을 합니다.

(브라우저가 HttpOnly를 지원할 경우..)


Set-Cookie:

JSESSIONID=7C333333229AFDD0CEOR176CEE7AB; Domain=.gsretail.com; Path=/; HttpOnly


개발자도구에(F12)를 눌러서 Network 를 클릭하고, Name 탭 아래 요청된 문서들을 클릭하면 Response Headers 부분을 볼 수 있습니다.

위의 Set-Cookie 결과는 제가 임의의 홈페이지에 들어가서 Response Headers 부분의 Set-Cookie 영역입니다.


위에 Http response header에 파란영역 HttpOnly 가 포함되어 있다면, 브라우저가 이 flag를 지원하는 경우, 쿠키는 클라이언트 측 스크립트에 접근할 수 없습니다.

cross-site scripting(XSS)가 존재하여 보안적으로 인해 사용자가 우연히 이 링크에 접속한다 해도, 브라우저는 삼자에게 쿠키를 노출시키지 않습니다.


만약, 브라우저가 HttpOnly를 지원하지 않는데, 웹사이트가 HttpOnly cookie를 설정하려 해도, HttpOnly flag는 브라우저에 의해 무시되며, 따라서 이전 방식으로 스크립트가 접근할 수 있는 cookie를 생성합니다.


결과적으로, 쿠키(일반적으로 세션쿠키)는 악성스크립트에 의한 수정과 절도에 의해 취약해집니다.

Server.xml에 Context path  경로에 이후 useHttpOnly = "true"로 설정을 하면 해당 경로에 접근할 경우 HttpOnly flag가 생성됩니다.

ex) <Context path="/myWebApplicationPath" useHttpOnly="true">



결론 : HttpOnly는 document.cookie를 이용해서 누군가가 쿠키에 접속 못하도록 하는것임.



Today :
Yesterday :
Total :