1581, 5/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   twinz
   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (1)

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=844 [º¹»ç]


º¸¾ÈÀº ´ÙÂ÷¿øÀûÀÎ ¹®Á¦ÀÔ´Ï´Ù. ¾îµð¿¡¼­³ª º¸¾È»ó À§ÇèÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ¿À·ù ó¸® Äڵ带 ÀÛ¼ºÇϰųª ³Ê¹« ¸¹Àº ±ÇÇÑÀ» Á¦°øÇÏ´Â °æ¿ì, ¼­¹ö¿¡¼­ ½ÇÇàÇÏ°í ÀÖ´Â ¼­ºñ½º°¡ ¹«¾ùÀÎÁö ÀØ¾î ¹ö¸®´Â °æ¿ì, ¸ðµç »ç¿ëÀÚ ÀÔ·ÂÀ» Çã¿ëÇÏ´Â °æ¿ì µîÀÌ ÀÖ½À´Ï´Ù. ±× ¹Û¿¡µµ ¿©·¯ °¡Áö °æ¿ì°¡ ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°Àº ¾ÈÀüÇÑ ³×Æ®¿öÅ© Àü·«¿¡ ´ëÇÑ 10°¡Áö ÁÖÀÇ »çÇ׿¡ µû¶ó ½Ã½ºÅÛ, ³×Æ®¿öÅ©, Äڵ带 ¼øÁ¶·Ó°Ô º¸È£ÇÒ ¼ö ÀÖ½À´Ï´Ù.

1. »ç¿ëÀÚ ÀÔ·Â ½Å·ÚÀÇ À§Ç輺
ÀÌ ±â»çÀÇ ³ª¸ÓÁö ºÎºÐÀ» ÀÐÁö ¾Ê´õ¶óµµ ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ »çÇ×Àº "»ç¿ëÀÚ ÀÔ·ÂÀ» ¹ÏÁö ¸»¾Æ¾ß ÇÑ´Ù"´Â °ÍÀÔ´Ï´Ù. µ¥ÀÌÅÍ°¡ Ç×»ó ¿Ã¹Ù¸£°Ô ±¸¼ºµÇ°í Á¦´ë·Î µÇ¾î ÀÖ´Ù°í »ý°¢ÇÑ´Ù¸é ¹®Á¦¿¡ Á÷¸éÇÏ°Ô µË´Ï´Ù. ´ëºÎºÐÀÇ º¸¾È»ó Ãë¾àÁ¡Àº ¼­¹ö ½Ã½ºÅÛ¿¡ À߸øµÈ µ¥ÀÌÅÍ°¡ Á¦°øÇÏ´Â °ø°ÝÀÚ·Î ÀÎÇØ ¹ß»ýÇÕ´Ï´Ù.
ÀÔ·ÂÀÌ ¿Ã¹Ù¸¥ Çü½ÄÀ̶ó°í ¹«Á¶°Ç ½Å·ÚÇÏ´Â °ÍÀº ¹öÆÛ ¿À¹ö·±, »çÀÌÆ® °£ ½ºÅ©¸³Æ® °ø°Ý, SQL ÁÖÀÔ °ø°Ý µî°ú °°Àº ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ ÀáÀçÀûÀÎ °ø°Ý ¹®Á¦¿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆ캸°Ú½À´Ï´Ù.
2. ¹öÆÛ ¿À¹ö·± ¹æÁö
¹öÆÛ ¿À¹ö·±Àº °ø°ÝÀÚ°¡ ÇÊ¿ä ÀÌ»óÀ¸·Î ±Ô¸ð°¡ Å« µ¥ÀÌÅ͸¦ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ Á¦°øÇÒ ¶§ ¹ß»ýÇÏ´Â °ÍÀ¸·Î¼­ ³»ºÎ ¸Þ¸ð¸® °ø°£À¸·Î ¿À¹öÇ÷ε˴ϴÙ. ¹öÆÛ ¿À¹ö·±Àº C/C++¿¡¼­ ÁÖ·Î ¹ß»ýÇϸç ÀϹÝÀûÀ¸·Î ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹öÆÛ ¿À¹ö·±Àº ¸íÈ®ÇÏÁö ¾ÊÀº ¹öÆÛ ¿À¹ö·±°ú ¼öÁ¤Çϱ⠾î·Á¿î ¹öÆÛ ¿À¹ö·± µÎ °¡Áö À¯ÇüÀÌ ÀÖ½À´Ï´Ù. °³¹ßÀÚ´Â ³»ºÎ ¹öÆÛº¸´Ù Å« µ¥ÀÌÅÍ°¡ ¿ÜºÎ¿¡¼­ Á¦°øµÇ¸®¶ó°í´Â »ý°¢ÇÏÁö ¸øÇß½À´Ï´Ù. ¿À¹öÇ÷δ ¸Þ¸ð¸®ÀÇ ´Ù¸¥ µ¥ÀÌÅÍ ±¸Á¶¿¡ ¼Õ»óÀ» ÀÏÀ¸Å°±â ¶§¹®¿¡ °ø°ÝÀÚ°¡ À¯ÇØÇÑ Äڵ带 ½ÇÇàÇÒ ¼ö ÀÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ ¹öÆÛ ¾ð´õÇ÷Π¹× ¹öÆÛ ¿À¹ö·±Àº ¹è¿­ Àε¦½Ì ¹®Á¦¸¦ À¯¹ß½ÃÅ°Áö¸¸ ÀϹÝÀûÀÎ °ÍÀº ¾Æ´Õ´Ï´Ù.
¾Æ·¡ÀÇ C++ Äڵ带 »ìÆ캾½Ã´Ù.
void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) {
    char cBuffDest[32];
    memcpy(cBuffDest,cBuffSrc,cbBuffSrc);
}

ÀÌ Äڵ忡¼­ À߸øµÈ Á¡Àº ¹«¾ùÀϱî¿ä  »ç½Ç, cBuffSrc ¹× cbBuffSrc°¡ µ¥ÀÌÅ͸¦ ½Å·ÚÇÏÁö ¾ÊÀº Äڵ堠½Å·ÚÇÏ´Â ¿øº»¿¡¼­ ³ª¿Â °ÍÀÌ°í µ¥ÀÌÅÍÀÇ Çü½Ä°ú Å©±â°¡ ¿Ã¹Ù¸¥Áö È®ÀÎÇÑ °ÍÀ̶ó¸é ÀÌ Äڵ忡´Â À߸øµÈ Á¡ÀÌ ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ÇØ´ç µ¥ÀÌÅÍ°¡ ½Å·ÚµÇÁö ¾ÊÀº ¿øº»¿¡¼­ ³ª¿Â °ÍÀÌ°í À¯È¿¼º °Ë»ç¸¦ ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â °ø°ÝÀÚ(½Å·ÚµÇÁö ¾ÊÀº ¿øº»)°¡ cBuffDestº¸´Ù Å« cBuffSrc¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç cbBuffSrc¸¦ cBuffDestº¸´Ù Å©°Ô ¼³Á¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. memcpy°¡ µ¥ÀÌÅ͸¦ cBuffDest¿¡ º¹»çÇÒ ¶§, cBuffDest°¡ ÇÔ¼öÀÇ ½ºÅà ÇÁ·¹ÀÓÀÇ ¹Ýȯ ÁÖ¼Ò ¿·¿¡ ÀÖ°í °ø°ÝÀÚ·Î ÀÎÇØ Äڵ尡 À¯ÇØÇÑ ÀÛ¾÷À» ½ÇÇàÇϹǷΠDoSomething¿¡¼­ ¹ÝȯµÈ ÁÖ¼Ò¿¡ ³ª»Û ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº »ç¿ëÀÚ ÀԷ°ú cBuffSrc ¹× cbBuffSrcÀÇ µ¥ÀÌÅ͸¦ ½Å·ÚÇÏÁö ¾Ê´Â °ÍÀÔ´Ï´Ù.
void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) {
    const DWORD cbBuffDest = 32;
    char cBuffDest[cbBuffDest];
#ifdef _DEBUG
    memset(cBuffDest, 0x33, cbBuffSrc);
#endif
    memcpy(cBuffDest, cBuffSrc, min(cbBuffDest, cbBuffSrc));
}

ÀÌ ÇÔ¼ö´Â Á¦´ë·Î ÀÛ¼ºµÈ ÇÔ¼öÀÇ ¼¼ °¡Áö ¼Ó¼ºÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¹öÆÛ ¿À¹ö·±À» ¿ÏÈ­½Ãŵ´Ï´Ù. ù°, ¹öÆÛ ±æÀ̸¦ Á¦°øÇϴ ȣÃâÀÚ°¡ ÇÊ¿äÇÕ´Ï´Ù. ¹°·Ð ÀÌ °ªÀ» ¹«Á¶°Ç ½Å·ÚÇÏÁö´Â ¸»¾Æ¾ß ÇÕ´Ï´Ù. µÑ°, µð¹ö±× ºôµå¿¡¼­ ¼Ò½º ¹öÆÛ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ Å©±âÀÎÁö È®ÀÎÇϱâ À§ÇØ ÇØ´ç Äڵ尡 ¹öÆÛ¸¦ °Ë»öÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì, ¾×¼¼½º À§¹ÝÀÌ ¹ß»ýÇϸç Äڵ带 µð¹ö°Å¿¡ throwÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷À» ½ÇÇàÇÏ´Â Áß¿¡ ¸¹Àº ¹ö±×¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, °¡Àå Áß¿äÇÑ »çÇ×À¸·Î¼­ memcpy¿¡ ´ëÇÑ È£ÃâÀº ¹æ¾îÀûÀ̱⠶§¹®¿¡ ¹öÆÛ°¡ ¼ÒÀ¯ÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅ͸¸Å­¸¸ º¹»çÇÕ´Ï´Ù.
MicrosoftÀÇ Windows Security Push¿¡¼­´Â C ÇÁ·Î±×·¡¸Ó¸¦ À§ÇØ ¾ÈÀüÇÑ ¹®ÀÚ¿­ ó¸® ÇÔ¼ö ¸ñ·ÏÀ» ¸¸µé¾ú½À´Ï´Ù. Strsafe.h: Safer String Handling in C (US) ¿¡¼­ È®ÀÎÇϽʽÿÀ.
3. »çÀÌÆ® °£ ½ºÅ©¸³Æà ¹æÁö
»çÀÌÆ® °£ ½ºÅ©¸³Æà Ãë¾àÁ¡Àº À¥ °ü·Ã ¹®Á¦Á¡À¸·Î¼­ ´ÜÀÏ À¥ ÆäÀÌÁöÀÇ °áÇÔÀ¸·Î ÀÎÇØ Å¬¶óÀ̾ðÆ®ÀÇ µ¥ÀÌÅÍ¿¡ ¼Õ»óÀ» ÀÔÈú ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°Àº ASP.NET ÄÚµå ´ÜÆíÀÌ ÀÖ´Ù°í °¡Á¤ÇØ º¾½Ã´Ù.
<script language=c#>
    Response.Write("¾È³çÇϼ¼¿ä, " + Request.QueryString("name"));
</script>

ÀÌ·¯ÇÑ Äڵ带 º» ÀûÀÌ ÀÖ½À´Ï±î  ÀÌ ÄÚµå´Â À߸øµÈ ÄÚµåÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°Àº URLÀ» »ç¿ëÇÏ¿© ÀÌ Äڵ忡 ¾×¼¼½ºÇÕ´Ï´Ù.
http://explorationair.com/welcome.aspx?name=Michael

C# Äڵ忡¼­´Â ÇØ´ç µ¥ÀÌÅÍ°¡ Ç×»ó ¿Ã¹Ù¸¥ Çü½ÄÀ̸ç À̸§¸¸ Æ÷ÇÔÇÑ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ÇÏÁö¸¸ °ø°ÝÀÚ´Â ÀÌ Äڵ带 ¾Ç¿ëÇÏ¿© ½ºÅ©¸³Æ® ¹× HTMLÀ» À̸§À¸·Î Á¦°øÇÕ´Ï´Ù. ´ÙÀ½ URLÀ» ÀÔ·ÂÇϸé
http://northwindtraders.com/welcome.aspx?name=<script>alert('¾È³ç!');
</script>

"¾È³ç!"À̶ó°í Ç¥½ÃµÈ ´ëÈ­ »óÀÚ°¡ ÀÖ´Â À¥ ÆäÀÌÁö¿¡ ¿¬°áµË´Ï´Ù. »ç¿ëÀÚ°¡ ÀÌ¿Í °°Àº ¸µÅ©¸¦ Ŭ¸¯ÇÏ¸é ¾î¶»°Ô µÉ±î¿ä  Äõ¸® ¹®ÀÚ¿­¿¡ ÁÁÁö ¾ÊÀº ½ºÅ©¸³Æ® ¹× HTMLÀÌ ÀÖ¾î »ç¿ëÀÚÀÇ ÄíÅ°¸¦ °ø°ÝÀÚ°¡ °¡Á®°¡ °ø°ÝÀÚÀÇ »çÀÌÆ®¿¡ °Ô½ÃÇÏ°Ô µÇ¸é »ç¿ëÀÚÀÇ °³ÀÎ ÄíÅ° Á¤º¸¸¦ °ø°ÝÀÚ°¡ °®°Ô µÇ°Å³ª ´õ ³ª»Û »óȲÀÌ ¹ß»ýÇÏ°Ô µË´Ï´Ù.
ÀÌ°ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ù°, ÀÔ·Â ³»¿ëÀ» ½Å·ÚÇÏÁö ¾Ê°í »ç¿ëÀÚÀÇ À̸§ÀÌ ¹«¾ùÀ¸·Î µÇ¾î ÀÖ´ÂÁö ½ÅÁßÈ÷ »ìÆì¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÏ¹Ý ½ÄÀ» »ç¿ëÇÏ¿© À̸§¿¡ ÀϹÝÀûÀÎ ¹®ÀÚ ÇÏÀ§ ÁýÇÕ¸¸ Æ÷ÇԵǾî ÀÖÀ¸¸ç Å©±â°¡ ³Ê¹« Å©Áö ¾ÊÀºÁö È®ÀÎÇÕ´Ï´Ù. ´ÙÀ½ C# ÄÚµå Á¶°¢À» »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Regex r = new Regex(@"^[w]{1,40}$");
        
if (r.Match(strName).Success) {
    // ÁÁ½À´Ï´Ù! ¿Ã¹Ù¸¥ ¹®ÀÚ¿­ÀÔ´Ï´Ù.
} else {
    // ÁÁÁö ¾Ê½À´Ï´Ù! À߸øµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù.
}

ÀÌ Äڵ忡¼­´Â ÀÏ¹Ý ½ÄÀ» »ç¿ëÇÏ¿© ¹®ÀÚ¿­¿¡ 1°ú 40 »çÀÌÀÇ ¿µ¼ýÀÚ¸¸ Æ÷ÇԵǴÂÁö È®ÀÎÇÕ´Ï´Ù. ÀÌ ¹æ¹ý¸¸ÀÌ °ªÀÌ ¿Ã¹Ù¸¥Áö È®ÀÎÇÏ´Â ¾ÈÀüÇÑ ¹æ¹ýÀÔ´Ï´Ù.
ÀÌ ÀÏ¹Ý ½ÄÀ» ÅëÇØ HTML ¶Ç´Â ½ºÅ©¸³Æ®¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏ¹Ý ½ÄÀ» »ç¿ëÇÏ¿© À߸øµÈ ¹®ÀÚ¸¦ ã°í, À߸øµÈ ¹®ÀÚ°¡ °Ë»öµÈ °æ¿ì¿¡´Â ¿äûÀ» °ÅºÎÇÏ´Â ÀÛ¾÷À» ÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé ÀÌ·¯ÇÑ ÀÛ¾÷Àº ½Ç¼ö·Î ºü¶ß¸®´Â °æ¿ì°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.
µÎ ¹ø° ¹æ¹ýÀº ÀÔ·ÂÀÌ Ãâ·ÂÀ¸·Î »ç¿ëµÉ ¶§ ¸ðµç ÀÔ·ÂÀ» HTML ÀÎÄÚµùÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô Çϸé À§ÇèÇÑ HTML ű׸¦ ÁÙÀÏ ¼ö ÀÖ¾î À̽ºÄÉÀÌÇÁ ¹®ÀÚ¸¦ Á» ´õ ¾ÈÀüÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. Server.HTMLEncode°¡ ÀÖ´Â ASP ¶Ç´Â HttpServerUtility.HtmlEncode°¡ ÀÖ´Â ASP.NET¿¡¼­ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Â ¸ðµç ½ºÆ®¸µÀ» À̽ºÄÉÀÌÇÁÇÒ ¼ö ÀÖ½À´Ï´Ù.
4. sa »ç¿ë ±ÇÇÑ ºÒÇÊ¿ä
¸¶Áö¸· ÀÔ·Â Æ®·¯½ºÆ® °ø°ÝÀ¸·Î SQL ÁÖÀÔÀ» ¼³¸íÇÏ°Ú½À´Ï´Ù. ¸¹Àº °³¹ßÀÚµéÀÌ Microsoft SQL Server ¶Ç´Â Oracle°ú °°Àº ¹é¿£µå µ¥ÀÌÅÍ ÀúÀå¼Ò¿Í Åë½ÅÇϱâ À§ÇØ ÀÔ·ÂÀÌ ÇÊ¿äÇÑ Äڵ带 ÀÛ¼ºÇÏ°í ÇØ´ç ÀÔ·ÂÀ» »ç¿ëÇÏ¿© SQL Äõ¸®¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
¾Æ·¡ÀÇ Äڵ带 »ìÆ캾½Ã´Ù.
void DoQuery(string Id) {
    SqlConnection sql=new SqlConnection(@"data source=localhost;" +
            "user id=sa;password=password;");
    sql.Open();
    sqlstring= "SELECT hasshipped" +
            " FROM shipping WHERE id='" + Id + "'";
    SqlCommand cmd = new SqlCommand(sqlstring,sql);
  
ÀÌ ÄÚµå´Â ¼¼ °¡Áö ½É°¢ÇÑ °áÇÔÀÌ ÀÖ½À´Ï´Ù. ù°, ½Ã½ºÅÛ °ü¸®ÀÚ °èÁ¤ÀÎ sa·Î Web Service¿¡¼­ SQL Server·Î ¿¬°áÀÌ µÇ¾ú½À´Ï´Ù. ÀÌ ºÎºÐÀÌ ¿Ö °áÇÔÀÌ ÀÖ´ÂÁö °ð ¼³¸íÇÏ°Ú½À´Ï´Ù. µÑ°, sa °èÁ¤¿¡ ´ëÇÑ ¾ÏÈ£·Î "password"¸¦ »ç¿ëÇß½À´Ï´Ù.
±×·¯³ª ÀÌ Äڵ忡 °áÇÔÀÌ ÀÖ´Â °¡Àå Áß¿äÇÑ ¿øÀÎÀº SQL ¹®À» ÀÛ¼ºÇÏ´Â ½ºÆ®¸µ ¿¬°áÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ 1001À̶ó´Â ID¸¦ ÀÔ·ÂÇÏ¸é ´ÙÀ½°ú °°Àº ¿Ã¹Ù¸¥ Çü½ÄÀÇ À¯È¿ÇÑ SQL ¹®ÀÌ Ç¥½ÃµË´Ï´Ù.
SELECT hasshipped FROM shipping WHERE id = '1001'

ÇÏÁö¸¸ °ø°ÝÀÚ´Â À̺¸´Ù ÈξÀ ¾Õ¼­ »ý°¢ÇÕ´Ï´Ù. Áï, °ø°ÝÀÚ´Â ´ÙÀ½°ú °°Àº ÁúÀǸ¦ ½ÇÇàÇÏ´Â "'1001' DROP table shipping --" ID¸¦ ÀÔ·ÂÇÕ´Ï´Ù.
SELECT hasshipped FROM
shipping WHERE id = '1001'
DROP table shipping --';

ÀÌ·¸°Ô Çϸé ÁúÀÇ°¡ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀÌ º¯°æµË´Ï´Ù. ÀÌ ÄÚµå´Â Àü´ÞµÈ »çÇ×ÀÌ ÀÖ´ÂÁö È®ÀÎÇÒ »Ó¸¸ ¾Æ´Ï¶ó Àü´Þ Å×ÀÌºíµµ »èÁ¦ÇÕ´Ï´Ù. -- ¿¬»êÀÚ´Â SQLÀÇ ¼³¸í ¿¬»êÀڷμ­ °ø°ÝÀÚ·Î ÇÏ¿©±Ý À¯È¿ÇÏÁö¸¸ À§ÇèÇÑ ÀÏ·ÃÀÇ SQL ¹®À» ÀÛ¼ºÇϵµ·Ï ÇÕ´Ï´Ù.
ÀÌÁ¦ SQL Server µ¥ÀÌÅͺ£À̽º¿¡¼­ Å×À̺íÀ» »èÁ¦ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù. °ü¸®ÀÚ¸¸ÀÌ Å×ÀÌºí »èÁ¦ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¿©±â¿¡¼­´Â sa·Î µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÏ¿© sa°¡ SQL Server µ¥ÀÌÅͺ£À̽º¿¡¼­ ¾î¶² ÀÛ¾÷µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. sa·Î ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ SQL Server·Î ¿¬°áÇÏÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù. ´ë½Å ÀûÇÕÇÑ Windows ÅëÇÕ ÀÎÁõÀ» »ç¿ëÇϰųª ÀûÀýÈ÷ Á¦ÇÑµÈ ±Ç¸®°¡ ÀÖ´Â ¹Ì¸® Á¤ÀÇµÈ °èÁ¤À¸·Î ¿¬°áÇØ¾ß ÇÕ´Ï´Ù.
SQL ÁÖÀÔ ¹®Á¦¸¦ ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ Äڵ忡¼­´Â SQL ÀúÀå ÇÁ·Î½ÃÀú ¹× ¸Å°³ º¯¼ö¸¦ »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ Äõ¸®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ¶ÇÇÑ ÀÌ Äڵ忡¼­´Â 4ÀÚ¸®¿Í 10ÀÚ¸® »çÀÌÀÇ ¼ýÀÚ·Î µÈ Àü´Þ ID¸¸ °Ë»öÇϹǷΠÀÏ¹Ý ½ÄÀ» »ç¿ëÇÏ¿© ÀÔ·ÂÀÌ À¯È¿ÇÑÁö È®ÀÎÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
Regex r = new Regex(@"^d{4,10}$");
if (!r.Match(Id).Success)
    throw new Exception("À߸øµÈ ID");

SqlConnection sqlConn= new SqlConnection(strConn);
string str="sp_HasShipped";
SqlCommand cmd = new SqlCommand(str,sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID",Id);

¹öÆÛ ¿À¹ö·±, »çÀÌÆ® °£ ½ºÅ©¸³Æ®, SQL ÁÖÀÔ °ø°ÝÀº ÀÔ·Â Æ®·¯½ºÆ®ÀÇ ¿¹ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °ø°Ý¿¡¼­ ¸ðµç ÀÔ·Â »çÇ×ÀÌ ¿Ã¹Ù¸¥ °ÍÀ̶ó°í Áõ¸íµÉ ¶§±îÁö´Â À߸øµÈ °ÍÀ̶ó°í ¹Ï¾î¾ß ÇÕ´Ï´Ù.

ÃâÀú - songhs33 ´ÔÀÇ ºí·Î±×

  Hit : 10381     Date : 2007/08/28 10:54



    
1501   - [¸®´ª½ºÆÁ] ¸®´ª½º ÀÚµ¿½ÇÇà     twinz
08/28 8034
  - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (1)     twinz
08/28 10380
1499   - [º¸¾ÈÆÁ] ÇÁ·Î±×·¡¹Ö Äڵ庸ȣ (2)     twinz
08/28 7906
1498   - [º¸¾ÈÆÁ] ¸®´ª½º     twinz
08/28 7719
1497   - [º¸¾È³ëÆ®] ÄíÅ°[4]     twinz
08/28 9164
1496   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (1)     twinz
08/28 7990
1495   - [º¸¾È³ëÆ®] Æ÷Æ®½ºÄ³´× (2)     twinz
08/28 9489
1494   - [º¸¾È³ëÆ®] º¿[1]     twinz
08/28 7635
1493   - ÄÄÇ»ÅÍ ¹ÙÀÌ·¯½ºÀÇ Á¾·ù[1]     twinz
08/27 8718
1492   - ´ÙÀÌÇϵå 4.0 ÆÄÀ̾ÀÏ Çö½Ç °¡´É[2]     twinz
08/25 8617
1491   - µµÃ» , ÇØÅ· ºÒ°¡´ÉÇÑ ¼¼»óÀ̿´٠    twinz
08/25 8034
1490   - ¹é¾÷¸í·É¾îÀÇ Á¾·ù     twinz
08/27 9313
1489   - ¹«½ÃµÇ´Â ¿ÀÇÁ ½ºÅÄ´õµåº¸¾È     twinz
08/27 7036
1488   - ¼­¹ö°ü¸®ÀÚ¸¦ À§ÇÑ 50°¡Áö ºñ¹ý     twinz
08/27 9481
1487   - ½Ã½ºÅÛ º¸¾È     twinz
08/27 6989
1486   - ¾î¼Àºí¸®¾î 1[1]     twinz
08/27 8978
1485   - ¾î¼Àºí¸®¾î 2     twinz
08/27 8857
1484   - ¾î¼Àºí¸®¾î 3[1]     twinz
08/27 7019
1483   0¹ø¼½ÅÍ º£µå¼½ÅÍÀÏ°æ¿ì..[2]     ROK.AF
03/02 8033
1482   1[1]     ¹é¹ÎÁØõÀç
08/31 4762
[1][2][3][4] 5 [6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org