Spring Security, ¸ÂÃã º¸¾È ±â´É Á¦°ø ÅëÇØ ÀáÀçÀûÀÎ º¸¾È À§Çù Â÷´Ü °¡´É
[º¸¾È´º½º ±è¿µ¸í ±âÀÚ] À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ¹é¿£µå °³¹ß ¾ð¾î´Â Java, PHP, ASP.NETÀÌ ´ëÇ¥ÀûÀÌ´Ù. ƯÈ÷ ¿ì¸®³ª¶ó´Â Java »ç¿ë ºñÀ²ÀÌ ¿ùµîÈ÷ ³ô´Ù. Java °³¹ß ÇÁ·¹ÀÓ¿öÅ©´Â Spring, JSF, Hibernate, Structs µîÀÌ ÀÖÀ¸¸ç, ±¹³» À¥ ¹é¿£µå °³¹ß¿¡¼´Â SpringÀÌ »ç½Ç»ó Ç¥ÁØÀÌ µÇ°í ÀÖ´Ù.
¡ãSQL Injection °ø°Ý °úÁ¤[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
Çѱ¹Áö´ÉÁ¤º¸»çȸÁøÈï¿øÀÌ Á¦ÀÛ ¹× ¹èÆ÷ÇÑ ÀüÀÚÁ¤ºÎÇÁ·¹ÀÓ¿öÅ©´Â Á¤ºÎ ¹× °ø°ø±â°ü, °ø±â¾÷ µîÀÇ À¥»çÀÌÆ®¿¡ ÀÚÁÖ »ç¿ëµÇ´Â °øÅë ±â´ÉµéÀ» Spring ÇÁ·¹ÀÓ¿öÅ©¿Í ´ëÇ¥ÀûÀÎ Java ¶óÀ̺귯¸®(MyBatis, Apache Commons µî)¸¦ ÀÌ¿ëÇØ ¹Ì¸® ±¸ÇöÇØ ³õÀº °øÅë ÄÄÆ÷³ÍÆ®·Î À̸¦ °³¹ßÇϱâ À§ÇÑ °³¹ß ȯ°æ, ½ÇÇà ȯ°æ µîÀ¸·Î ±¸¼ºµÈ À¥ ÇÁ·¹ÀÓ¿öÅ©´Ù.
Java Spring ÇÁ·¹ÀÓ¿öÅ©´Â ¿ÀǼҽº ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©·Î ±â¾÷ ´ë»óÀ¸·Î È®Àå °¡´ÉÇÑ ¾ÛÀ» °³¹ßÇϱâ À§ÇÑ ±â´É°ú ÀÎÇÁ¶ó¸¦ Áö¿øÇÏ´Â °æ·®ÈµÈ ¼Ö·ç¼ÇÀÌ´Ù. ´ë±Ô¸ð µ¥ÀÌÅÍ Ã³¸®¿Í Æ®·£Àè¼ÇÀÌ µ¿½Ã¿¡ ÀÌ·ïÁö´Â ´ë±Ô¸ð ȯ°æ °³¹ß¿¡ »ç¿ëµÈ´Ù.
Java Spring ÇÁ·¹ÀÓ¿öÅ© ÀÌÀü¿¡´Â ¼¹ö »çÀ̵å ÄÄÆ÷³ÍÆ® ¾ÆÅ°ÅØóÀÎ Enterprise Java Beans(ÀÌÇÏ EJB)¸¦ »ç¿ëÇØ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ß ¹× ¼ºñ½ºÇß´Ù. ÇÏÁö¸¸ EJB´Â ¼³Á¤°ú °³¹ßÀÌ º¹ÀâÇÏ°í, 2.x ÀÌÀü ¹öÀü¿¡¼´Â ¿©·¯ ÆÄÀÏÀ» °³¹ßÀÚ°¡ Á÷Á¢ ¸¸µé°í ¸í½ÃÀûÀ¸·Î ÀÇÁ¸¼ºÀ» °ü¸®ÇØ¾ß Çß´Ù. ¶ÇÇÑ ±â¼ú ±¸ÇöÀÌ ¾î·Æ°í ȯ°æ ¼³Á¤ÀÌ º¹ÀâÇß´Ù. µû¶ó¼ ±âÁ¸ÀÇ ¹«°Å¿î ÄÁÅ×À̳ʸ¦ ´ë½ÅÇØ À¯¿¬¼ºÀÌ Å« °æ·® ÇÁ·¹ÀÓ¿öÅ©ÀÇ Çʿ伺ÀÌ ´ëµÎµÆÀ¸¸ç, Àü Spring Source ·Îµå Á¸½¼(Rod Johnson) °øµ¿ ⸳ÀÚ´Â 2002³â Java Spring ÇÁ·¹ÀÓ¿öÅ© Ãʱ⠹öÀüÀ» °ø°³Çß´Ù.
¡ãÀ¥ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ÇÁ·Î¼¼½º[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
Java Spring ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÇÙ½É ÇÁ·Î±×·¡¹Ö ¸ðµ¨Àº ¼ø¼ö ÀÚ¹Ù °´Ã¼(Plain Old Java Object, POJO), ÀÇÁ¸¼º ÁÖÀÔ(Dependency Injection, DI), Á¦¾îÀÇ ¿ªÀü(Inversion of Control, IoC), °üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö(Aspect-Oriented Programming, AOP), ÀÏ°üµÈ ¼ºñ½º Ãß»óÈ(Portable Service Abstraction, PSA)°¡ ÀÖ´Ù.
¸ÕÀú ¡®¼ø¼ö ÀÚ¹Ù °´Ã¼(Plain Old Java Object)¡¯¸¦ »ìÆ캸¸é, Java Spring ÇÁ·¹ÀÓ¿öÅ©´Â ƯÁ¤ ÇÁ·¹ÀÓ¿öÅ©³ª ¶óÀ̺귯¸®¿¡ Á¾¼ÓµÇÁö ¾Ê°í ¼ø¼ö ÀÚ¹Ù °´Ã¼(Plain Old Java Object, POJO) ±â¹ÝÀÇ ÇÁ·Î±×·¡¹Ö ¸ðµ¨·Î ¾ÛÀ» ±¸¼ºÇÑ´Ù. Áï, ƯÁ¤ Á¦¾àÀ̳ª ¿ä±¸»çÇ׿¡ Á¾¼ÓµÇÁö ¾Ê¾Æ Spring ÄÁÅؽºÆ® ¾øÀÌ POJO¸¦ Å×½ºÆ®ÇÒ ¼ö ÀÖ¾î À¯¿¬ÇÑ ÄÚµå ÀÛ¼º°ú Àç»ç¿ëÀÌ ½¬¿öÁø´Ù.
¡ãPOJO ÄÚµå ¹× POJO°¡ ¾Æ´Ñ ÄÚµå(ÁºÎÅÍ)[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
´ÙÀ½À¸·Î ¡®ÀÇÁ¸¼º ÁÖÀÔ(Dependency Injection)¡¯À» º¸¸é, ÀÇÁ¸¼ºÀ̶õ °´Ã¼°¡ ¼·Î ÀÇÁ¸ÇÏ´Â °ü°è·Î ÇϳªÀÇ °´Ã¼°¡ ³»ºÎÀÇ ´Ù¸¥ °´Ã¼¸¦ »ç¿ëÇÏ°í ÀÖÀ½À» ÀǹÌÇÑ´Ù. Java Spring ÇÁ·¹ÀÓ¿öÅ©¿¡´Â ¹®Á¦ ÇØ°áÀ» À§ÇØ °´Ã¼ÀÇ »ý¼º°ú ¶óÀÌÇÁ»çÀÌŬ °ü¸®¸¦ Spring ÄÁÅ×À̳ʿ¡ À§ÀÓÇØ Java SpringÀÌ ½ÇÇàµÉ ¶§ ÄÁÅ×À̳ʰ¡ ÀÇÁ¸¼ºÀÌ ÇÊ¿äÇÑ °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ°í °ü°è¸¦ ¸Î¾îÁØ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ °´Ã¼¸¦ ºó(Benn)À̶ó°í Çϸç ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ °úÁ¤À» ÀÇÁ¸¼º ÁÖÀÔÀ̶ó°í ÇÑ´Ù.
¼¼ ¹ø°·Î ¡®Á¦¾îÀÇ ¿ªÀü(Inversion of Control)¡¯Àº °´Ã¼ÀÇ »ý¼º°ú °´Ã¼ °£ÀÇ ÀÇÁ¸¼º °ü¸®¸¦ °³¹ßÀÚ°¡ ¾Æ´Ñ Spring ÄÁÅ×À̳ʰ¡ ´ã´çÇϵµ·Ï ÇØ °´Ã¼ °£ÀÇ °áÇÕµµ¸¦ ³·Ãß°í ¾ÖÇø®ÄÉÀ̼ÇÀÇ À¯¿¬¼º°ú Àç »ç¿ë¼ºÀ» ³ôÀÌ´Â µðÀÚÀÎ ÆÐÅÏÀÌ´Ù.
³× ¹ø°·Î ¡®°üÁ¡ ÁöÇâ ÇÁ·Î±×·¡¹Ö(Aspect-Oriented Programming)¡¯Àº ¾ÖÇø®ÄÉÀÌ¼Ç ¶Ç´Â ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡¼ ºñÁî´Ï½º ·ÎÁ÷°ú º°°³·Î ¿©·¯ ¸ðµâ¿¡¼ °øÅëÀ¸·Î ÇÊ¿äÇÑ ·Î±ë, º¸¾È, Æ®·£Àè¼Ç °ü¸®, ¿¹¿Ü ó¸® µîÀÇ ºÎ°¡ ±â´ÉÀ» ºÐ¸®ÇØ ¸ðµâÈÇÏ´Â °ÍÀÌ´Ù.
´Ù¼¸ ¹ø°·Î ¡®ÀÏ°üµÈ ¼ºñ½º Ãß»óÈ(Portable Service Abstraction)¡¯´Â ´Ù¾çÇÑ Ç÷§Æû°ú ȯ°æ¿¡¼ µ¿ÀÏÇÑ ¼ºñ½º¸¦ »ç¿ëÇϵµ·Ï Á¦°øÇÏ´Â ±â´ÉÀ¸·Î, Æ®·£Àè¼Ç °ü¸®, ¸Þ½Ã¡, À̸ÞÀÏ µî ´Ù¾çÇÑ ¼ºñ½º¸¦ ¼ºñ½º Ãß»óÈ·Î ¸¸µç´Ù. À̸¦ ÅëÇØ °³¹ßÀÚ´Â ÀÏ°üµÈ ¼ºñ½º¸¦ »ç¿ëÇÏ°Ô µÈ´Ù.
¡ãJava Spring ȯ°æ¿¡¼ÀÇ HTTP ¿äû ó¸® È帧µµ[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
´ÙÀ½À¸·Î Spring Security ÇÁ·¹ÀÓ¿öÅ©¸¦ »ìÆ캻´Ù. À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ÀÇ º¸¾È ±â´ÉÀº ¼ºñ½º Ãø¸é°ú ¹ÐÁ¢ÇÑ °ü°è·Î ºñÁî´Ï½º ·ÎÁ÷, ¸ðµâ, ³×Æ®¿öÅ© µî¿¡ ¹ÌÄ¡´Â ¿µÇâÀ» °í·ÁÇÏ°í, ´Ù¾çÇÑ °ø°Ý ±â¹ý¿¡ ´ëÀÀ ¹× º¹ÀâÇÑ º¸¾È ¿ä±¸»çÇ×Àº º¸¾È ±â´É ±¸ÇöÀÇ ¾î·Á¿òÀ» °¡Áß½ÃŲ´Ù. À̸¦ °³¼±Çϱâ À§ÇØ Java Spring ÇÁ·¹ÀÓ¿öÅ©ÀÇ ¼ºê ÇÁ·ÎÁ§Æ®·Î ½ÃÀÛµÈ °ÍÀÌ ¹Ù·Î Spring SecurityÀÌ´Ù. Spring Security´Â Java Spring ÇÁ·¹ÀÓ¿öÅ© ȯ°æ¿¡ ¸ÂÃã º¸¾È±â´ÉÀ» Á¦°øÇÏ´Â °·ÂÇÏ°í Æ÷°ýÀûÀÎ ÇÁ·¹ÀÓ¿öÅ©´Ù. ÁÖ¿ä ±â´ÉÀº »ç¿ëÀÚ ÀÎÁõ, ±ÇÇÑ ºÎ¿©, À¥ ±â¹Ý º¸¾È ¼³Á¤, º¸¾È À̺¥Æ® ó¸®, XSS(Cross-Site Script) ¹× CSRF(Cross-Site Request Forgery) ¹æ¾î°¡ ÀÖ´Ù.
Spring SecurityÀÇ ÁÖ¿ä ¾ÆÅ°ÅØó¸¦ º¸¸é Java Spring MVC ÇÁ·¹ÀÓ¿öÅ©¿¡¼ Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍÀÇ ¸ðµç HTTP ¿äûÀº DispatcherServletÀÌ ¸ÕÀú ¼ö½ÅÇÑ´Ù. DispatcherServletÀº Java EEÀÇ HttpServlet Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ ±¸ÇöµÈ ÇÁ·ÐÆ® ÄÁÆ®·Ñ·¯·Î, ¼ö½ÅÇÑ HTTP ¿äû Á¤º¸¿¡ ±â¹ÝÇØ ÀûÀýÇÑ ÄÁÆ®·Ñ·¯¿¡ ¿äû 󸮸¦ À§ÀÓÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¶ÇÇÑ, ¿î¿µ ȯ°æ¿¡ µû¶ó ¼¹ö·Î µé¾î¿À´Â ¸ðµç ¿äûÀ» °øÅëÀ¸·Î Àû¿ëÇÒ ºÎ°¡ ÀÛ¾÷ÀÌ ÀÖÀ» ¶§´Â Filter°¡ À̸¦ ó¸®ÇÑ´Ù.
javax.servlet.Filter ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ Å¬·¡½ºÀÎ Filter´Â Java Spring ÄÁÅ×ÀÌ³Ê ¿ÜºÎÀÇ À¥ ÄÁÅ×À̳ʿ¡ À§Ä¡ÇÑ´Ù. Filter ´Ü°è¿¡¼ ÀÎÁõ, Àΰ¡, ·Î±ë, ÀÎÄÚµù µîÀÇ º¸¾È ±â´ÉÀ» ¼öÇàÇϸé Java Spring ÄÁÅ×À̳ʿ¡ µµ´ÞÇϱâ Àü¿¡ ÀáÀçÀûÀÎ º¸¾È À§ÇùÀ» Â÷´ÜÇÒ ¼ö ÀÖ´Ù.
Spring Security¿¡ ÀÇÇØ ÀÎÁõµÈ »ç¿ëÀÚÀÇ Á¤º¸´Â SecurityContextHolder¿¡ ÀúÀåµÈ´Ù. °³¹ßÀÚ´Â ÇÊ¿äÇÒ ¶§ SecurityContextHolder¸¦ ÂüÁ¶ÇØ º¸¾È ÄÁÅؽºÆ®¿¡ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç ÇöÀç »ç¿ëÀÚÀÇ ±ÇÇÑ È®ÀÎÀ̳ª »ç¿ëÀÚ Á¤º¸¸¦ °¡Á®¿Í º¸¾È Á¤º¸¸¦ È¿À²ÀûÀ¸·Î »ç¿ëÇÏ°Ô µÈ´Ù.
Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö ºÐ¸®°¡ ¿ä±¸µÇ¸é¼ ´Ù¾çÇÑ À¥ ±â¹ÝÀÇ Java ±â¼úÀÌ µîÀåÇÏ°í, ±â¼úÀû º¯È´Â ÇÁ·ÎÁ§Æ® ±¸¼ºÀÇ º¹À⼺À» À¯¹ßÇÏ¸ç °³¹ß ¼Óµµ ÀúÇϸ¦ °¡Á®¿Ô´Ù. Java Spring º¥´õ´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ °³¼±ÇÏ°í Çö´ëÀûÀÎ °³¹ß ȯ°æ¿¡ ¸Â´Â ¼ºñ½º¸¦ Á¦°øÇϱâ À§ÇØ Spring Boot Starter ÇÁ·ÎÁ§Æ®¸¦ °ø°³Çß´Ù. Spring Boot Starter´Â °£ÆíÇÑ ¼³Á¤, ºü¸¥ ½ÃÀÛ ¹× °³¹ß ¼Óµµ Çâ»ó, ÀÚµ¿ ¼³Á¤, ³»Àå ¼¹ö, ¿î¿µ ÆíÀǼº µîÀ» ÁßÁ¡À¸·Î °³¹ßµÆ´Ù. Spring Boot´Â ¸ðµâÈµÈ ÇüÅ·ΠÁ¦°øµÅ ±âÁ¸º¸´Ù ÀÇÁ¸¼º °ü¸®°¡ ÈξÀ °£´ÜÇØÁ³°í, À¥ ¼¹ö°¡ ÇϳªÀÇ ÆÄÀÏ¿¡ ³»ÀåµÈ »óÅ·ΠºôµåµÇ¾î ¹èÆ÷µµ °£ÆíÇØÁ³´Ù. ¶ÇÇÑ, º¹ÀâÇÑ Java Spring ¼³Á¤À» ÀÚµ¿ÈÇØ °³¹ßÀÚ°¡ ½±°í ºü¸£°Ô ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¼ö Àִ ȯ°æÀ» °®Ãß°Ô µÆ´Ù.
¡ãCSRF(Cross-Site Request Forgery) °ø°Ý ½Ã³ª¸®¿À[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
Spring Security¸¦ È°¿ëÇÑ ÀÎÁõ ´Ü°èÀÇ SQL ÀÎÁ§¼Ç(SQL Injection) ¹æ¾î¸¦ »ìÆ캻´Ù. »ç¿ëÀÚ ·Î±×ÀÎ ¼öÇà ´Ü°è¿¡¼ ¹ß»ýÇÒ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ º¸¾È À§Çù¿¡´Â SQL Injection, ÀÎÁõ Á¤º¸ À¯Ãâ, ÀÎÁõ ½Ãµµ Á¦ÇÑ ±â´É ºÎÀç, °¡Â¥ À¥ »çÀÌÆ®¸¦ ÀÌ¿ëÇÑ ÇǽÌ, Ãë¾àÇÑ ºñ¹Ð¹øÈ£ Çã¿ë µîÀÌ ÀÖ´Ù. ÀÌ Áß¿¡¼µµ °¡Àå À§Çèµµ°¡ ³ôÀº Ãë¾àÁ¡Àº SQL InjectionÀÌ´Ù.
SQL Injection Ãë¾àÁ¡Àº ±ÇÇÑÀÌ ¾ø´Â »ç¿ëÀÚ°¡ ÀÎÁõ ´Ü°è¸¦ ¿ìȸÇØ Å¸ »ç¿ëÀÚÀÇ °èÁ¤À¸·Î ·Î±×ÀÎÇϰųª, µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ Á¶È¸, ¼öÁ¤, »èÁ¦ÇÒ ¼ö ÀÖ°í ´õ ³ª¾Æ°¡ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¾Ç¿ëÇØ ¿ø°Ý¿¡¼ ½Ã½ºÅÛ ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù.
À̶§ ¹®Á¦ÀÇ »ç¿ëÀÚ ÀÎÁõ Äõ¸® ±¸Á¶¸¦ »ìÆ캸¸é, ¿ÜºÎ ÀÔ·Â °ªÀ» µ¿ÀûÀ¸·Î Äõ¸®¿¡ ÇÒ´çÇØ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ªÀ» ¹®ÀÚ¿ ±×´ë·Î »ðÀÔÇϸç ÀÛµ¿ÇÑ´Ù. ¹Ý¸é¿¡ formLogin API¸¦ »ç¿ëÇÑ °æ¿ì, Ãß°¡ÀûÀÎ ÀÔ·Â °ª °ËÁõ ¾øÀ̵µ SQL Injection °ø°ÝÀ¸·ÎºÎÅÍ ¾ÈÀüÇÔÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
¡ãÀÎÁõ ¹× Àΰ¡ °£·« ¿äû È帧µµ[À̹ÌÁö=À̱۷çÄÚÆÛ·¹À̼Ç]
´ÙÀ½À¸·Î Spring Security¸¦ È°¿ëÇÑ Å©·Î½º»çÀÌÆ® ¿äû À§Á¶(Cross-Site Request Forgery) ¹æ¾î¿¡ ´ëÇØ »ìÆ캻´Ù. Å©·Î½º»çÀÌÆ® ¿äû À§Á¶(Cross-Site Request Forgery, ÀÌÇÏ CSRF)´Â À¥ ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ¿¡¼ ¹ß»ýÇÏ´Â º¸¾È Ãë¾àÁ¡ Áß Çϳª·Î, °ø°ÝÀÚ°¡ »ç¿ëÀÚ·Î °¡ÀåÇØ »ç¿ëÀÚ°¡ ÀǵµÇÏÁö ¾ÊÀº ¿äûÀ» ¼¹ö¿¡ º¸³»µµ·Ï ÇÏ´Â °ø°ÝÀÌ´Ù. CSRF °ø°ÝÀº »ç¿ëÀÚ°¡ ÇöÀç ÀÎÁõµÈ ¼¼¼ÇÀ» À¯ÁöÇÏ°í ÀÖÀ» ¶§ ¹ß»ýÇϸç, °ø°ÝÀÚ´Â »ç¿ëÀÚÀÇ ±ÇÇÑÀ» µµ¿ëÇØ ÀÚµ¿ °Ô½Ã±Û µî·Ï, Á¤º¸ ¼öÁ¤, ȸ¿ø °¡ÀÔ µîÀÇ ¾ÇÀÇÀûÀÎ ¿äûÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
CSRF Ãë¾àÁ¡¿¡ ¾Ë·ÁÁø ´ëÀÀ¹æ¾ÈÀ¸·Î´Â HTTP GET ¸Þ¼µå ´ë½Å POST ¸Þ¼µå »ç¿ë, CSRF ÅäÅ« »ç¿ë, HTTP Referer Çì´õ °Ë»ç, SameSite ÄíÅ° ¼Ó¼º »ç¿ë, Double Submit Cookie µîÀÌ´Ù. Spring Security´Â ÀÌ ´ëÀÀÀ» À§ÇØ CSRF ÅäÅ« »ý¼º ¹× °ËÁõ ±â´ÉÀ» Á¦°øÇÑ´Ù.
Spring Security´Â CsrfFilter¸¦ ÅëÇØ CSRF ÅäÅ«À» ÀÚµ¿À¸·Î »ý¼ºÇÏ°í °ü¸®ÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ¸ÕÀú ¼¹ö·Î HTTP ¿äûÀÌ ¼ö½ÅµÇ¸é, º¸¾È ÇÊÅÍ Ã¼ÀÎÀÌ µ¿ÀÛÇØ ¿äûÀ» ó¸®ÇÑ´Ù. ÀÌ °úÁ¤¿¡¼ ¾ÈÀüÇÑ HTTP ¸Þ¼µå ¿äûÀº Çã¿ëÇÏ°í ´Ù¸¥ ¸ðµç ¿äûÀº CSRF ÅäÅ«ÀÌ Æ÷ÇÔµÈ Çì´õ³ª ¿äû ¸Å°³º¯¼ö°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇØ À¯È¿¼ºÀ» È®ÀÎÇÑ´Ù.
À̱۷çÄÚÆÛ·¹ÀÌ¼Ç °ü°èÀÚ´Â ¡°Áö±Ý±îÁö Spring SecurityÀÇ CSRF º¸È£ ±â´ÉÀÌ ¾î¶°ÇÑ ¹æ½ÄÀ¸·Î CSRF °ø°ÝÀ» È¿°úÀûÀ¸·Î ¹æ¾îÇÏ´ÂÁö »ìÆìºÃ´Ù¡±¸ç ¡°´Ù¸¸ CSRF ÅäÅ«Àº HTML Æû Çʵ忡 ¼û°ÜÁ® ÀÖ¾î Ŭ¶óÀ̾ðÆ® Ãø¿¡¼ ÆäÀÌÁö Á¶ÀÛÀÌ °¡´ÉÇÏ´Ù¸é °ø°ÝÀÚ´Â ÀÌ ÅäÅ«À» Å»ÃëÇØ º¸È£ ±â´ÉÀ» ¹«·ÂÈÇÒ ¼ö ÀÖ´Ù¡±°í ¼³¸íÇß´Ù. ÀÌ¾î ¡°Spring Security´Â À̹ø¿¡ ´Ù·é ÀÎÁõ, Àΰ¡, CSRF ¹æ¾î ¿Ü¿¡µµ XSS ¹æÁö, ¼¼¼Ç °íÁ¤ °ø°Ý ¹æÁö, Ŭ¸¯ÀçÅ· ¹æÁö µî ¿©·¯ º¸¾È ±â´ÉÀ» ±âº»À¸·Î Áö¿øÇÑ´Ù¡±¸ç ¡°°ð Ãâ½Ã ¿¹Á¤ÀÎ 7.x ¹öÀü¿¡¼´Â ´õ¿í °·ÂÇÑ º¸¾È±â´ÉÀÌ Á¦°øµÉ °Í¡±À̶ó°í µ¡ºÙ¿´´Ù.
[±è¿µ¸í ±âÀÚ(boan@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>