APIº° Çã¿ë ÀÓ°èÄ¡¡¤¸Þ¼Òµå Á¦ÇÑ, JSON ÀÀ´ä Ŭ·ÎÅ·, JSON ¿äû ÇÊµå °Ë»ç
[º¸¾È´º½º ±è°æ¾Ö ±âÀÚ] API(Application Programming Interface)´Â °¢±â ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿¬°áÇØ ÁÖ´Â ÀÎÅÍÆäÀ̽º·Î, °¢°¢ÀÇ ¼ºñ½ºµéÀ» Çϳª·Î ¹´Â Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù. API º¸¾ÈÀÇ ±âº»Àº À¥ ¾ÖÇø®ÄÉÀÌ¼Ç º¸¾ÈÀÌ´Ù. ¹öÆÛ ¿À¹öÇ÷οì, ÀÎÁ§¼Ç, XSS µî À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» Ÿ±êÀ¸·Î ÇÑ ´ëÇ¥ÀûÀÎ °ø°Ý ´ëÀÀ°ú ÇÔ²² ¹Î°¨Á¤º¸¿¡ ´ëÇÑ À¯Ãâ ¹æÁö, Çã¿ë ¹× Â÷´Ü ¸®½ºÆ® °ü¸®, Á¢±Ù·Î±× °ü¸®, Å©¸®µ§¼È ½ºÅÍÇÎ °ø°Ý Â÷´Ü µîÀ» ÅëÇØ API º¸¾ÈÀ» °ÈÇØ¾ß ÇÑ´Ù. ƯÈ÷ OWASP¿¡¼ ¼±Á¤ÇÑ Áß¿ä Ãë¾àÁ¡ ´ëÀÀÀÌ ¿ä±¸µÇ´Âµ¥, ¿©±â¿¡´Â 6°¡Áö ÇÙ½É ±â¼úÀÌ ÇÊ¿äÇÏ´Ù.
¡ãAPI º¸¾ÈÀ» À§ÇÑ ÇÙ½É ±â¼ú 6°¡Áö[ÀÚ·á=ÆÄÀÌ¿À¸µÅ©]
º¸¾È¾÷ü ÆÄÀÌ¿À¸µÅ©ÀÇ ±è¼ÛÇö À¥º¸¾ÈPMÀº API º¸¾ÈÀ» À§ÇÑ OWASP Ãë¾àÁ¡ ´ëÀÀ±â¼ú·Î ¡âmTLS ¡â½Äº°Á¤º¸ Ŭ·ÎÅ· ¡âAPI ÅäÅ« ÀÎÁõ ¹× ¹«°á¼º °Ë»ç ¡âAPIº° Çã¿ë ÀÓ°èÄ¡ ¹× ¸Þ¼Òµå Á¦ÇÑ ¡âJSON ÀÀ´ä Ŭ·ÎÅ· ¡âJSON ¿äû ÇÊµå °Ë»ç¸¦ Á¦½ÃÇß´Ù.
1. mTLS(Mutual TLS)
TLS´Â ¿À·£ ±â°£ Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö °£ º¸¾È ¿¬°áÀ» À§ÇØ »ç¿ëµÆ´Ù. ±âÁ¸¿¡ TLS°¡ Àû¿ëµÈ ¼¹ö´Â ¸ðµç Ŭ¶óÀ̾ðÆ®°¡ Á¢¼ÓÇÒ ¼ö ÀÖ¾ú´Ù. ÇÏÁö¸¸ Á¦·ÎÆ®·¯½ºÆ® º¸¾È ½Ã´ë¿¡¼´Â ¸ðµç Ŭ¶óÀ̾ðÆ®µéÀÇ Á¢¼Ó Çã¿ëÀÌ º¸¾È»ó Ãë¾àÇÒ ¼ö ÀÖ´Ù. ƯÈ÷, API¸¦ ÅëÇØ ¹Î°¨ÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â ¼¹ö´Â ƯÁ¤ Ŭ¶óÀ̾ðÆ®µé¿¡°Ô¸¸ Á¢¼ÓÀ» Çã¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ÀÌ Á¡À» º¸¿ÏÇϱâ À§ÇØ µîÀåÇÑ mTLS´Â Ŭ¶óÀ̾ðÆ®°¡ ¼¹ö¸¦ È®ÀÎÇÏ´Â °ÍÀº ¹°·Ð ¿ªÀ¸·Î ¼¹ö°¡ Ŭ¶óÀ̾ðÆ®¸¦ È®ÀÎÇÏ´Â °úÁ¤ÀÌ Ãß°¡µÈ ±â¼úÀÌ´Ù.
±è¼ÛÇö PMÀº ¡°À¥¹æȺ®¿¡ Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö ÀÎÁõ¼¸¦ ÇÔ²² ÀúÀåÇÑ ÈÄ, Ŭ¶óÀ̾ðÆ®¿Í Åë½Å ½Ã¿¡´Â ¼¹ö·Î, ¼¹ö¿Í Åë½Å ½Ã¿¡´Â Ŭ¶óÀ̾ðÆ®·Î ÀÎÁõÀ» ½Ç½ÃÇÑ´Ù¡±¸ç ¡°API º¸¾È¿¡ ÀÖ¾î ±²ÀåÈ÷ Áß¿äÇÑ ±â¼ú¡±À̶ó°í ¼³¸íÇß´Ù.
2. ½Äº°Á¤º¸ Ŭ·ÎÅ·
API ¿£µåÆ÷ÀÎÆ®¿¡ ½Äº°Á¤º¸°¡ ÇÊ¿äÇÑ °æ¿ì Ŭ¶óÀ̾ðÆ®´Â ÇØ´çÇÏ´Â ½Äº°Á¤º¸¸¦ Æ÷ÇÔÇØ ¿äûÇÑ´Ù. ¸¸¾à ÀÌ °úÁ¤¿¡¼ ¿äû Çʵ尡 °ø°ÝÀÚ¿¡°Ô ³ëÃâµÇ¾î ½Äº° Á¤º¸¸¦ ½±°Ô ±¸ºÐÇÒ ¼ö ÀÖ´Ù¸é, °ø°ÝÀÚ´Â À̸¦ ÀÌ¿ëÇØ ¼Õ»óµÈ °´Ã¼ ¼öÁØ ±ÇÇÑ °ø°ÝÀ» ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â 2019³â OWASP API Security Top 10¿¡¼ A1ÀÎ ¼Õ»óµÈ °³Ã¼ ¼öÁØ ±ÇÇÑ(Broken Object Level Authorization) Ãë¾àÁ¡¿¡ ÇØ´çµÈ´Ù.
¿¹¸¦ µé¾î shopNameÀÌ °¡°Ô À̸§À» ½Äº°ÇÏ´Â Á¤º¸¶ó°í °¡Á¤Çϸé, ÀÌ Á¤º¸¸¦ ´Ù¸¥ À̸§À¸·Î º¯°æÇØ ¼öÀÍ µî ¹Î°¨ÇÑ Á¤º¸¸¦ ¿¶÷ÇÒ ¼öµµ ÀÖ´Ù´Â ¾ê±â´Ù. ÀÌó·³ ½±°Ô Çص¶ °¡´ÉÇÑ ½Äº° Á¤º¸´Â ¾Ç¿ëµÉ °¡´É¼ºÀÌ Å©´Ù. ÀÌ ¶§¹®¿¡ À¥¹æȺ®Àº ÀÌ Á¤º¸¸¦ ¾ÏÈ£ÈÇϰųª ¸¶½ºÅ·ÇÏ´Â ±â´ÉÀ» ÅëÇØ ÇØ´ç Ãë¾àÁ¡¿¡ ´ëÇÑ À§Çù¿¡ ´ëÀÀÇØ¾ß ÇÑ´Ù.
3. API ÅäÅ« ÀÎÁõ ¹× ¹«°á¼º °Ë»ç
ÀÎÁõ¿¡ ´ëÇÑ Ãë¾àÁ¡Àº API»Ó¸¸ ¾Æ´Ï¶ó ¸ðµç ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ¿¡¼ °¡Àå Ä¡¸íÀûÀÎ Ãë¾àÁ¡À¸·Î ºÐ·ùµÈ´Ù. ¼Õ»óµÈ »ç¿ëÀÚ ÀÎÁõ(Broken User Authentication, 2019 OWASP API Security Top 10 A2)°ú ½Äº° ¹× ÀÎÁõ ½ÇÆÐ(Identification and Authentication Failures, 2021 OWASP Top 10 A7) Ãë¾àÁ¡¿¡ ÇØ´çÇÑ´Ù.
JSONÀ» »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹Àº API´Â ÁÖ·Î JWT(JSON Web Token)¸¦ »ç¿ëÇØ »ç¿ëÀÚÀÇ ÀÎÁõ°ú ±ÇÇÑÀ» °ü¸®ÇÑ´Ù. JWT´Â Çì´õ(ÅäÅ«ÀÇ À¯Çü ¹× ¾Ë°í¸®Áò), ÆäÀ̷εå(Ŭ¶óÀ̾ðÆ® Á¤º¸), ½Ã±×´Ïó(Çì´õ¿Í ÆäÀ̷εå, ±×¸®°í ¼¹öÀÇ ºñ¹ÐÅ°·Î ¸¸µé¾îÁø Çؽðª)·Î ±¸¼ºµÈ´Ù. ÀÌ ¶§¹®¿¡ JWT°¡ À§¡¤º¯Á¶µÇ¾îµµ ½Ã±×´Ïó¸¦ ¸¸µé ¶§ »ç¿ëÇÑ ºñ¹ÐÅ°°¡ ¾øÀ¸¸é ¼¹ö¿¡¼ ¹ß±ÞÇÑ JWT¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ Æ¯¼ºÀ» È°¿ëÇØ À¥¹æȺ®Àº ¼¹öÀÇ ºñ¹ÐÅ°¸¦ °¡Áö°í Ŭ¶óÀ̾ðÆ®°¡ Á¦½ÃÇÏ´Â JWTÀÇ ¹«°á¼ºÀ» °ËÁõÇÒ ¼ö ÀÖ´Ù.
4. APIº° Çã¿ë ÀÓ°èÄ¡ ¹× ¸Þ¼Òµå Á¦ÇÑ
¼¹ö´Â ¼ºñ½º¿¡ ´ëÇÑ ¿äûÀ» Á¤»óÀûÀ¸·Î ó¸®Çϱâ À§ÇØ ³×Æ®¿öÅ© ´ë¿ªÆø, ¼¹öÀÇ CPU¡¤¸Þ¸ð¸®¡¤½ºÅ丮Áö µîÀÇ ÀÚ¿øÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ÀÚ¿øÀº ¹«ÇÑÀ¸·Î °ø±ÞµÇÁö ¾Ê±â ¶§¹®¿¡ ÀûÀýÇÑ Á¤Ã¥À¸·Î °ü¸®µÇÁö ¾ÊÀ¸¸é ÀÚ¿ø ºÎÁ· ¹× ¼Óµµ Á¦ÇÑ Ãë¾àÁ¡À¸·Î ÀÎÇØ DoS, DDoS¿Í °°Àº °ø°ÝÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.
ÀÚ¿ø ºÎÁ· ¹× ¼Óµµ Á¦ÇÑ(Lack of Resource & Rate Limiting, 2019 OWASP API Security Top 10 A4)¿Í °°Àº Ãë¾àÁ¡À¸·ÎºÎÅÍ ÀÚ¿øÀ» º¸È£Çϱâ À§Çؼ´Â ¿äû¿¡ ´ëÇØ Çã¿ë ÀÓ°èÄ¡¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â Á¤Ã¥ÀÌ ÇÊ¿äÇÏ´Ù. ƯÈ÷, APIÀÇ °æ¿ì »ç¿ë ¸ñÀû¿¡ µû¶ó API Æ®·£Àè¼Çº° Çã¿ë ÀÓ°èÄ¡ Á¦ÇÑ°ú ¸ñÀû¿¡ ¸Â´Â HTTP ¸Þ¼Òµå Á¦ÇÑÀÌ ÇÊ¿äÇÏ´Ù.
5. JSON ÀÀ´ä Ŭ·ÎÅ·
API´Â ±¸Çö ÇüÅ¿¡ µû¶ó Ŭ¶óÀ̾ðÆ®ÀÇ Àǵµ¿Í ´Ù¸£°Ô °úµµÇÑ Á¤º¸°¡ Á¦°øµÇ¾î °úµµÇÑ µ¥ÀÌÅÍ ³ëÃâ(Excessive Data Exposure), ´ë·® ÇÒ´ç(Mass Assignment) Ãë¾àÁ¡ÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ÀÌ °°Àº Ãë¾àÁ¡Àº Á¤º¸ÀÇ ±ÇÇÑÀ» È®ÀÎÇØ °úµµÇÑ Á¤º¸°¡ Æ÷ÇԵŠÀÖÀ¸¸é À̸¦ Ŭ·ÎÅ·(µ¥ÀÌÅÍ Åë½Å¿¡¼ ¼Û½Å Ãø°ú ¼ö½Å Ãø »çÀÌ¿¡ ÁÖ±âÀûÀ¸·Î ¹ß»ýÇϴ Ŭ¶ô ½ÅÈ£¸¦ »ç¿ëÇØ Àü¼Û ÀÚ·áÀÇ µ¿±â¸¦ ¸ÂÃß´Â ¹æ¹ý)ÇØ Á¤º¸ÀÇ ³ëÃâÀ» ¸·¾ÆÁà¾ß ÇÑ´Ù. API º¸¾È¿¡ ÀÖ¾î Áß¿äÇÑ Æ÷ÀÎÆ®´Â ¹Ù·Î API¿¡¼ ÁÖ·Î »ç¿ëÇÏ´Â Àü¼Û ÇüÅÂÀÎ JSON ÄÁÅÙÃ÷ ŸÀÔ¿¡ ´ëÇؼµµ Ŭ·ÎÅ· ±â´ÉÀ» Àû¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù.
6. JSON ¿äû ÇÊµå °Ë»ç
¾Æ¹«¸® ¾ÈÀüÇÑ ½Ã½ºÅÛÀ» µµÀÔÇصµ ¿î¿µÀÌ ¹Ì¼÷ÇÏ¸é ½É°¢ÇÑ Ãë¾àÁ¡À¸·Î À̾îÁú ¼ö ÀÖ´Ù. µû¶ó¼ Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¼ö½ÅÇÑ ¿äûÀÇ Çʵ带 °Ë»çÇØ Á¤´çÇÑ ¿äûÀÎÁö ¿©ºÎ¸¦ ÆÇ´ÜÇØ¾ß ÇÑ´Ù. ÆÄÀÌ¿À¸µÅ© ±è¼ÛÇö À¥º¸¾ÈPMÀº ¡°JSON ÀÀ´ä Ŭ·ÎÅ·¿¡¼ ¼³¸íÇÑ °Í°ú °°ÀÌ API º¸¾ÈÀ» À§Çؼ´Â JSON ÄÁÅÙÃ÷ ŸÀÔ¿¡ ´ëÇØ ºÐ¼®ÇÏ°í ´ëÀÀÇÏ´Â ±â¼úÀÌ Áö¿øµÇ´ÂÁö°¡ ÇÙ½É Æ÷ÀÎÆ®ÀÏ ¸¸Å Áß¿äÇÏ´Ù¡±°í °Á¶Çß´Ù.
[±è°æ¾Ö ±âÀÚ(boan3@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>