본문 바로가기
Coding/Etc

HttpOnly를 이용한 쿠키 하이재킹 방지

by Hide­ 2014. 4. 28.
반응형

쿠키의 httponly 옵션에 대해서

1. 언제 개발되었나? 
   -2002년 MS IE6.0 SP1 에서 최초 지원

2. 어떤 동작을 하는가?
   -클라이언트 브라우저에서 쿠키가 생성될때 httponly 옵션이 있으면 
    클라이언트 스크립트의 쿠키 요청에 대해서 브라우저는 응답을 하지 않습니다.
   -예를 들어 쿠키 생성시 httponly 옵션이 있다면 javascript 의 document.cookie 메소드를 통해
    쿠키정보를 브라우저로 부터 획득할 수 없습니다.

3. 왜 만들어 졌는가?
   -XSS 를 이용한 쿠키 하이재킹에 대응하기 위해 개발된 기술입니다.

4. 지원하는 브라우저
   -Microsoft Internet Explorer 6.0 SP1 이상
   -Mozilla Firefox  3.0.0.6+ 이상
   -Netscape Navigator 9.0b3 이상
   -Opera 9.50 이상
   -Google's Chrome 
   
   -ASP, JSP 같은 웹 언어하고는 상관 없습니다.
    쿠키를 발생하는 Set-Cookie 에 httponly 라는 문자열만 있으면 되며
    클라이언트 측 브라우저가 해당 옵션을 지원하냐 못하냐의 문제입니다.
   -현재 대부분의 최신 브라우저에서 지원하고 있으며 지원하지 않는다고 해서

    에러는 발생하지 않고 단지 옵션이 무시됩니다.

5. MS 의 표준화 노력

   -ASP.NET 2.0 환경에서는 시스템 쿠키에서 httponly 는 디폴트로 생성이 됩니다.

   -MSDN 발췌

    "HttpOnly. This property specifies whether the cookie can be accessed by client script. In ASP.NET 2.0, this value is always set to true. Internet Explorer 6 Service Pack 1 supports this cookie attribute, which prevents client-side script from accessing the cookie from the document.cookie property."

http://msdn.microsoft.com/en-us/library/ms533046.aspx
http://blogs.msdn.com/ie8kr/archive/2009/03/17/ie8-5.aspx
http://www.owasp.org/index.php/HTTPOnly
http://msdn.microsoft.com/en-us/library/aa480476.aspx


출처 : http://blog.naver.com/kim119z


<script type="text/javascript">
function showMeTheCookie()
{
    alert(document.cookie);
}

function normalCookie()
{
    document.cookie="Name=Value";
    showMeTheCookie();
}

function httpOnlyCookie()
{
    document.cookie="Name=Value; httpOnly";
    showMeTheCookie();
}
</script>

<FORM>
    <INPUT TYPE="BUTTON" onClick="normalCookie();" Value="Display Normal Cookie">
    <INPUT TYPE="BUTTON" onClick="httpOnlyCookie();" Value="Display httpOnly Cookie">
</FORM>

소스 출처 : http://mkseo.pe.kr/blog

'Coding > Etc' 카테고리의 다른 글

MySQL 문자열관련 함수  (0) 2015.01.27
PHP실행기  (0) 2014.05.29
ereg / eregi / ereg_replace / eregi_replace 함수  (0) 2014.05.04
PHP 정규표현식  (0) 2014.05.04
기본적인 MySQL 문법  (0) 2014.05.02