º¸¾È´º½º â°£ 17ÁÖ³âÀ» ÃàÇÏÇÕ´Ï´Ù!!

Home > Àüü±â»ç

SQL ÀÎÁ§¼Ç ÇØÅ· °ø°Ý, ¾î¶»°Ô ´ëÀÀÇØ¾ß Çϳª¿ä?

ÀÔ·Â : 2015-03-14 12:06
ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â

Q. ÃÖ±Ù ¹®Á¦°¡ µÇ°í ÀÖ´Â SQL ÀÎÁ§¼Ç °ø°Ý¿¡ ´ëÇÑ °¡Àå È¿°úÀûÀÎ ´ëÀÀ¹æ¹ý¿¡´Â ¾î¶² °ÍÀÌ ÀÖ³ª¿ä?


A-1. SQL ÀÎÁ§¼Ç(Injection)Àº µ¥ÀÌÅͺ£À̽º(DB)¿Í ¿¬µ¿µÈ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ ÀÔ·ÂµÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ À¯È¿¼º °ËÁõÀ» ÇÏÁö ¾ÊÀ» °æ¿ì, °ø°ÝÀÚ°¡ ÀÔ·Â Æû ¹× URL ÀԷ¶õ¿¡ SQL¹®À» »ðÀÔÇÏ¿© DB·ÎºÎÅÍ Á¤º¸¸¦ ¿­¶÷Çϰųª Á¶ÀÛÇÒ ¼ö ÀÖ´Â º¸¾È Ãë¾àÁ¡À» ¸»ÇÕ´Ï´Ù.

Ãë¾àÇÑ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â »ç¿ëÀڷκÎÅÍ ÀÔ·ÂµÈ °ªÀ» ÇÊÅ͸µ °úÁ¤ ¾øÀÌ ³Ñ°Ü¹Þ¾Æ µ¿Àû Äõ¸®(Dynamic Query)¸¦ »ý¼ºÇÕ´Ï´Ù.
ÀÌ´Â °³¹ßÀÚ°¡ ÀǵµÇÏÁö ¾ÊÀº Äõ¸®°¡ »ý¼ºµÇ¾î Á¤º¸ À¯Ãâ¿¡ ¾Ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌó·³, SQL ÀÎÁ§¼ÇÀº ÀԷ°ª °ËÁõ ÀýÂ÷ ¹®Á¦¿¡ ±âÀÎÇϹǷΠ°³¹ß´Ü°è¿¡¼­ºÎÅÍ ¹Ýµå½Ã ¸ðµç ÀԷ°ª¿¡ ´ëÇÑ ÀûÀýÇÑ °ËÁõÀýÂ÷¸¦ ¼³°èÇÏ°í ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.


ÇàÁ¤ÀÚÄ¡ºÎ ¡®½ÃÅ¥¾îÄÚµù¡¯ °¡À̵å(2012³â 9¿ù ¹ß°£)¿¡ µû¸£¸é, SQL ÀÎÁ§¼ÇÀ» ¹æÁöÇϱâ À§ÇÑ ¾ÈÀüÇÑ ÄÚµù±â¹ýÀ¸·Î PreparedStatement Ŭ·¡½º¿Í ÇÏÀ§ ¸Þ¼Òµå executeQuery(), execute(), executeUpdate()¸¦ »ç¿ëÇÒ °ÍÀ» ±Ç°íÇÏ°í ÀÖ½À´Ï´Ù.

ÀÏ¹Ý ÁúÀǹ®(Statement)¸¦ »ç¿ëÇϸé, Äõ¸®ºÐ¼®¡æÃÖÀûÈ­¡æ±ÇÇÑüũ¡æÄõ¸®½ÇÇà ´Ü°è¸¦ ¸Å¹ø °ÅÄ¡°Ô µÇ´Âµ¥, À̸¥¹Ù µ¿Àû Äõ¸®¸¦ »ý¼ºÇÏ°Ô µÇ¾î SQL ÀÎÁ§¼Ç¿¡ Ãë¾àÇÒ ¼ö ÀÖÁö¸¸, Prepared Statement¸¦ »ç¿ëÇÏ°Ô µÇ¸é, Äõ¸®ºÐ¼®¡æÃÖÀûÈ­¸¦ 1¹ø¸¸ °ÅÄ¡¹Ç·Î, ¸Å¹ø ½ÇÇàµÉ ¶§¸¶´Ù ÀçÄÄÆÄÀÏÀÌ ÇÊ¿ä ¾ø°í(¼±)ÄÄÆÄÀÏµÈ »óÅ·Π¿©·¯ ¹ø ½ÇÇàµÉ ¼ö ÀÖÀ¸¹Ç·Î, ¿øõÀûÀ¸·Î Äõ¸® Á¶ÀÛÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.


±×·¯³ª ¿Ïº®ÇÏ°Ô Äڵ带 ÀÛ¼ºÇß´Ù ÇÏ´õ¶óµµ ÇØ´ç ¾îÇø®ÄÉÀ̼ǰú °ü·Ã¾ø´Â ¼­µåÆÄƼ ¼ÒÇÁÆ®¿þ¾î¸¦ ÅëÇØ Ãë¾àÁ¡ÀÌ »ý±æ ¼ö ÀÖÀ¸¹Ç·Î ÁÖ±âÀûÀ¸·Î Ãë¾àÁ¡ Á¡°ËÀ» ÅëÇØ º¸¾È¹®Á¦µéÀ» Á¡°ËÇÏ°í Áø´ÜÇÏ´Â °úÁ¤ÀÌ ÇÊ¿äÇϸç, »õ·Î¿î Ãë¾àÁ¡ ¹ß°ß»çÇ׿¡ ´ëÇØ ½Å¼ÓÇÑ º¸¾ÈÁ¶Ä¡¸¦ ÅëÇØ À¥¼­¹ö, SQL ¼­¹ö º¸¾ÈÀ» °­È­ÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.

(¹ÚÁ¤È¯ Çѱ¹ÀÎÅͳÝÁøÈï¿ø ÆÀÀå)


A-2. ÇöÀç ±â¾÷À̳ª ±â°üÀº SQL ÀÎÁ§¼Ç °ø°Ý¿¡ Å©°Ô 2°¡Áö·Î ´ëÀÀÇÏ°í ÀÖ½À´Ï´Ù. ù ¹ø°´Â º¸¾È ¼Ö·ç¼Ç(À¥ ¹æÈ­º® µî)À¸·Î ´ëÀÀÇÏ´Â ¹æ¹ýÀÌ°í µÎ ¹ø°´Â ½ÃÅ¥¾îÄÚµùÀ¸·Î ´ëÀÀÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ±â¾÷À̳ª ±â°üÀº À§ µÎ °¡Áö¸¦ ¸ðµÎ ´Ù Àû¿ëÇÑ °æ¿ì¿Í µÑ Áß Çϳª¸¸ Àû¿ëÇÏ´Â °æ¿ì·Î ³ª´µ´Âµ¥ º¸¾È ¼Ö·ç¼ÇÀ¸·Î ´ëÀÀÇÏ´Â °ÍÀº µðÆúÆ®·Î ·êÀ» ¼³Á¤ÇØ »ç¿ëÇÏ´Â °æ¿ì ¿ìȸ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ È¿°úÀûÀÎ ´ëÀÀÀÌ ¾Æ´Ï¸ç, °¡Àå È¿°úÀûÀÎ ´ëÀÀ¹æ¹ýÀº ¼Ò½ºÄÚµå´Ü¿¡¼­ ½ÃÅ¥¾î ÄÚµùÀ» ÅëÇØ SQL ÀÎÁ§¼ÇÀ» ¹æ¾îÇÏ´Â °ÍÀÌ ¿øõÀûÀ¸·Î Â÷´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù.


Àüü ¼Ò½ºÄڵ忡¼­ DB¿Í ¿¬µ¿µÈ ÆäÀÌÁö¸¦ ¸ñ·ÏÈ­ÇÑ ÈÄ, DB Äõ¸®¹®¿¡ µé¾î°¡´Â ÀÔ·Â µ¥ÀÌÅÍ¿¡ ´ëÇØ °ËÁõÀ» ¼öÇàÇÏ´ÂÁö üũÇÏ°í SQL Äõ¸® ¹®(select, from, union, where, substr µî) ¹× Ư¼ö¹®ÀÚ(',--,/*)°¡ ÀÖÀ» °æ¿ì ÇÊÅ͸µ ¹× ġȯÇϵµ·Ï Àû¿ëÇÏ´Â °ÍÀÌ °¡Àå ÁÁÀº ´ëÀÀ¹æ¹ýÀÔ´Ï´Ù.

(¼Õ±âÁ¾ KISA Ãë¾àÁ¡ºÐ¼®ÆÀ ¼±ÀÓ¿¬±¸¿ø/skj@kisa.or.kr)


A-3. ÀϹÝÀûÀ¸·Î SQL ÀÎÁ§¼Ç Ãë¾àÁ¡Àº À¥»çÀÌÆ®°¡ µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿µÈ ±â´É ¼öÇà ½Ã »ç¿ëÀÚÀÇ ÀÔ·Â °ªÀ¸·Î Äõ¸® ¹®ÀÚ¿­À» Àü¼ÛÇßÀ» ¶§ ¹ß»ýµÇ´Â ¿¡·¯³ª ºñÁ¤»óÀûÀÎ °á°ú¿¡ DBÁ¤º¸, ÀÎÁõÁ¤º¸ µî Áß¿äÁ¤º¸°¡ Æ÷ÇԵǰųª ÀÎÁõ¿ìȸ µîÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± SQL Injection¿¡ ´ëÇÑ È¿°úÀûÀÎ ´ëÀÀ¹æ¹ýÀ¸·Î´Â ¡âµ¥ÀÌÅͺ£À̽º Äõ¸®¹®¿¡ »ç¿ëµÇ´Â ¹®ÀÚ¿­ °ËÁõ ¡â»ç¿ëÀÚ ÀÔ·Â °ª ¹× ¼­¹ö·Î Àü¼ÛµÇ´Â ÆĶó¹ÌÅÍ¿¡ ´ëÇÑ °ËÁõ ¡â¿¡·¯ÆäÀÌÁö¿¡ ´ëÇÑ ¿À·ùÁ¤º¸ ³ëÃâ È®ÀÎ ¡âDB Á¢±Ù±ÇÇÑ(¾îÇø®ÄÉÀÌ¼Ç Á¢±Ù) ÃÖ¼ÒÈ­ µîÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

(ÀÓµ¿Ã¶ ¿­½ÉÈ÷Ä¿¹Â´ÏÄÉÀ̼ÇÁî ¸®½ºÅ©°ü¸®½Ç ´ë¸®/neo3712@keencomms.com)


A-4. Ãë¾àÁ¡ Áø´ÜÀ» ÅëÇÑ À¥»çÀÌÆ® Á¡°Ë, À¥ ¹æÈ­º® ¿î¿µ, ½ÃÅ¥¾îÄÚµù Àû¿ë µîÀÌ µÉ ¼ö ÀÖÀ¸¸ç, ÃÖ±Ù ÀÎÁ§¼Ç ÅøÀÌ ¸¹ÀÌ »ç¿ëµÇ°í ÀÖÀ¸¹Ç·Î ÀÌ·¯ÇÑ ÆÐÅÏÀ» º¸¾È ½Ã½ºÅÛ¿¡¼­ È®ÀÎÇÏ¿© Â÷´ÜÇÏ´Â °Íµµ ÇÊ¿äÇÕ´Ï´Ù.

(°­Á¤ÈÆ 11¹ø°¡/jhkang@sk.com)


A-5. KISA¿¡¼­ ¿î¿µÁßÀÎ ÀÎÅͳÝħÇØ´ëÀÀ¼¾ÅÍ(Krcert)¿¡ µû¸£¸é SQL ÀÎÁ§¼Ç¿¡ ´ëÇÑ ´ëÀÀ ¹æ¾ÈÀ» Á¦½ÃÇÏ°í ÀÖ½À´Ï´Ù.

ù ¹ø°·Î µ¿Àû SQL »ç¿ëÀ» Áö¾çÇÏ´Â °ÍÀÔ´Ï´Ù. µ¥ÀÌÅͺ£À̽º¿ÍÀÇ ¿¬µ¿ ºÎºÐ¿¡¼­´Â µ¿Àû SQLÀ» ´õ ÀÌ»ó »ç¿ëÇÏÁö ¸»°í ÀúÀå ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý±îÁöµµ ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Â µ¿Àû SQL ¿Ï¼º ¹æ½ÄÀº º¯¼öÀÇ ÀԷ°ªÀ» ¿¬°á½ÃÄÑ SQL¹®À» ¿Ï¼º(Concatenation of SQL)½ÃÅ°´Â ÇüÅÂÀ̹ǷΠ°ø°ÝÀÚÀÇ SQL¹® ÁÖÀÔÀÌ ¸Å¿ì ¿ëÀÌÇÕ´Ï´Ù.

±×·¯³ª ÀúÀå ÇÁ·Î½ÃÀú¸¦ ÅëÇØ µ¥ÀÌÅͺ£À̽º ¿¬µ¿À» ±¸ÇöÇÑ´Ù¸é, ÀÌ¹Ì ÇÁ·Î½ÃÀú ³»ºÎ¿¡¼­ ÀԷ°ª¿¡ ´ëÇÑ ÀÚ·áÇü °ËÁõÀÌ ÀÌ·ç¾îÁö¸ç, ÇØ´ç ÇÁ·Î½ÃÀúÀÇ ³»ºÎ¿¡¼­¸¸ ¿µÇâÀ» ³¢Ä¡±â ¶§¹®¿¡ º¸¾È Ãø¸é¿¡¼­µµ ´õ¿í ´õ ¾ÈÀüÇÏ°í, ¼º´ÉÀ̳ª À¯Áöº¸¼ö Ãø¸é¿¡¼­µµ ´ë´ÜÈ÷ È¿°úÀûÀÔ´Ï´Ù.


µÎ ¹ø°·Î ¾ÈÀüÇÑ À¥»çÀÌÆ® ¼³°è¿Í ±¸ÇöÀÔ´Ï´Ù. SQL ÀÎÁ§¼Ç Ãë¾àÁ¡Àº ÀԷ°ª °ËÁõ ÀýÂ÷ ¹®Á¦¿¡ ±âÀÎÇϹǷÎ, °³¹ß´Ü°è¿¡¼­ºÎÅÍ ¹Ýµå½Ã ¸ðµç ÀԷ°ª¿¡ ´ëÇØ ÀûÀýÇÑ °ËÁõÀýÂ÷¸¦ ¼³°èÇÏ°í ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. °£·«È÷ °ËÁõ°úÁ¤À» ¿ä¾àÇϸé, ÀԷ°ªÀÇ Å©±â¸¦ °Ë»çÇÏ°í Ư¼ö¹®ÀÚ°¡ ÀÖ´Â °æ¿ì À§ÇèÇÏÁö ¾ÊÀº ¹®ÀڷΠġȯÇÑ ÈÄ ÀԷ°ªÀÌ Çã¿ë¹üÀ§ ³»¿¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù.


¼¼ ¹ø°·Î ¿À·ù ³»¿ëÀÇ Ç¥½Ã¸¦ Â÷´ÜÇÏ´Â µî À¥¼­¹ö º¸¾ÈÀ» °­È­ÇÏ´Â °ÍÀÔ´Ï´Ù. SQL ÀÎÁ§¼Ç¿¡ ´ëÇÑ ±Ùº»ÀûÀÎ ¹®Á¦ ÇØ°áÀ» À§Çؼ­´Â ÇÁ·Î±×·¥ º¸¿Ï Á¶Ä¡°¡ ¹Ýµå½Ã ÇÊ¿äÇÏÁö¸¸,À¥ ¼­¹öÀÇ º¸¾È °­È­ ¼³Á¤À» ÅëÇؼ­µµ º¸¿ÏÀûÀÎ È¿°ú¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.


³× ¹ø°·Î À¥ ¹æÈ­º®ÀÇ È°¿ëÀÔ´Ï´Ù. À¥ º¸¾È Ãë¾àÁ¡ÀÇ ±Ùº»ÀûÀÎ ¹®Á¦ ÇØ°áÀ» À§Çؼ­´Â ÇÁ·Î±×·¥ÀÇ º¸¿ÏÁ¶Ä¡°¡ ¹Ýµå½Ã ÇÊ¿äÇÏÁö¸¸ ¿î¿µ ÁßÀΠȨÆäÀÌÁö¿¡¼­ ÇÁ·Î±×·¥ ¼öÁ¤À¸·Î ÀÎÇÑ ¹®Á¦µéµµ °ËÅäÇØ Á¶Ä¡ÇØ¾ß Çϱ⠶§¹®¿¡ ±× ½Ã°£ µ¿¾ÈÀº À¥¹æÈ­º®À̳ª ºÎ°¡ÀûÀÎ º¸¿ÏÁ¶Ä¡µéÀ» ÅëÇØ ½Ã°£À» È®º¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.


¸¶Áö¸·À¸·Î À¥º¸¾È Ãë¾àÁ¡¿¡ ´ëÇÑ Á¡°ËÀÔ´Ï´Ù. ¼³°è¿Í ±¸Çö¿¡ À־ ¾ÈÀüÇÑ °³¹ß ÀýÂ÷¿¡ µû¶ó °³¹ßµÆ´õ¶óµµ Á¸ÀçÇÒ ¼ö ÀÖ´Â º¸¾È ¹®Á¦µéÀ» Á¡°ËÇÏ°í Áø´ÜÇÏ´Â °úÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ƯÈ÷ SQL ÀÎÁ§¼ÇÀÇ °æ¿ì´Â ÇÁ·Î±×·¥ ¼Ò½º »ó¿¡¼­ ÀԷ°ª °ËÁõÀÌ ÀûÀýÈ÷ ÀÌ·ç¾îÁ³´ÂÁö Á¡°Ë(White box test) ÇØ º¸°í À¥ Ãë¾àÁ¡ Á¡°Ë µµ±¸¸¦ º´ÇàÇÏ¿© Á¡°Ë(Black box test)ÇØ º»´Ù¸é ´õ¿í ´õ ¾ÈÀüÇÑ À¥ ¼­ºñ½º ¿î¿µÀÌ µÉ °ÍÀÔ´Ï´Ù.

KrCERT/CC¿¡¼­ Á¦°øÇÏ´Â ¿ø°Ý À¥ Ãë¾àÁ¡ Á¡°Ë ¼­ºñ½º¸¦ ÀÌ¿ëÇϸé À¥ Ãë¾àÁ¡ ¿ø°Ý Á¡°Ë ¼­ºñ½º¸¦ Á¦°ø¹ÞÀ» ¼ö ÀÖÀ¸¸ç, Á¡°Ë ½ÅûÀº ȨÆäÀÌÁö(http://webcheck.krcert.or.kr/)¿¡¼­ Á¢¼ö ¹Þ°í ÀÖ½À´Ï´Ù. ´Ù¸¸, ºñ¿µ¸®´Üü³ª ¿µ¼¼±â¾÷ µî Á¤º¸º¸È£ Ãë¾à°èÃþÀ» ´ë»óÀ¸·Î Á¦°øÇϹǷΠ¼­ºñ½º ´ë»ó¿¡ ÇØ´çÇÏ´Â °æ¿ì¿¡¸¸ ¼­ºñ½º ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

(È«Áؼ® Çѱ¹»ê¾÷±â¼úº¸È£Çùȸ °üÁ¦¿î¿µÆÀ ÆÀÀå/jun0817@kaits.or.kr)

[±èÅÂÇü ±âÀÚ(boan@boannews.com)]


<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(http://www.boannews.com/) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>

  •  
  • 7
  • ÆäÀ̽ººÏ º¸³»±â Æ®À§ÅÍ º¸³»±â ³×À̹ö ¹êµå º¸³»±â Ä«Ä«¿À ½ºÅ丮 º¸³»±â ³×À̹ö ºí·Î±× º¸³»±â

  • ¡°
  •  SNS¿¡¼­µµ º¸¾È´º½º¸¦ ¹Þ¾Æº¸¼¼¿ä!! 
  • ¡±
 ÇÏÀÌÁ¨ ÆÄ¿öºñÁî 23³â 11¿ù 16ÀÏ~2024³â 11¿ù 15ÀϱîÁö ¾Æ½ºÆ®·Ð½ÃÅ¥¸®Æ¼ ÆÄ¿öºñÁî 2023³â2¿ù23ÀÏ ½ÃÀÛ À§Áîµð¿£¿¡½º 2018 ³Ý¾Øµå ÆÄ¿öºñÁî ÁøÇà 2020³â1¿ù8ÀÏ ½ÃÀÛ~2021³â 1¿ù8ÀϱîÁö
¼³¹®Á¶»ç
3¿ù 15ÀϺÎÅÍ ½ÃÇàµÇ°í ÀÖ´Â °³Á¤ °³ÀÎÁ¤º¸º¸È£¹ý°ú °ü·ÃÇØ °¡Àå ±î´Ù·Ó°í ÀÌÇàÇϱ⠾î·Á¿î Á¶Ç×Àº ¹«¾ùÀΰ¡¿ä?
ÀΰøÁö´É(AI) µî ÀÚµ¿È­µÈ °áÁ¤¿¡ ´ëÇÑ Á¤º¸ÁÖü ±Ç¸® ±¸Ã¼È­
Á¢±Ù±ÇÇÑ °ü¸® µî °³ÀÎÁ¤º¸ ¾ÈÀü¼º È®º¸Á¶Ä¡ °­È­ ¹× °íÀ¯½Äº°Á¤º¸ °ü¸®½ÇÅ Á¤±âÁ¶»ç
¿µÇâÆò°¡ ¿ä¾àº» °ø°³Á¦µµ µµÀÔ µî °³ÀÎÁ¤º¸ ¿µÇâÆò°¡Á¦µµ
¿µ»óÁ¤º¸Ã³¸®±â±â ¹× ¾ÈÀüÁ¶Ä¡ ±âÁØ
°³ÀÎÁ¤º¸ º¸È£Ã¥ÀÓÀÚÀÇ Àü¹®¼º °­È­ À§ÇÑ Àü¹®CPO ÁöÁ¤
±¹¿Ü ¼öÁý¡¤ÀÌÀü °³ÀÎÁ¤º¸ 󸮹æħ °ø°³ µî °³ÀÎÁ¤º¸ 󸮹æħ Æò°¡Á¦µµ
¼ÕÇعè»óÃ¥ÀÓ Àǹ«´ë»óÀÚ º¯°æ ¹× È®´ë
°ø°ø±â°ü °³ÀÎÁ¤º¸ º¸È£¼öÁØ Æò°¡ È®´ë
±âŸ(´ñ±Û·Î)