4장. ¸ðµç ÀÔ·ÂÀ» È®ÀÎÇØ¶ó

 

Wisdom will save you from the ways of wicked men, from men whose words are perverse...

 Proverbs 2:12 (NIV)
차례
4.1. ¸í·É Çà
4.2. ȯ°æ º¯¼ö
4.2.1. ¾î¶² ȯ°æ º¯¼ö´Â À§ÇèÇÏ´Ù
4.2.2. ȯ°æ º¯¼ö ÀúÀå Æ÷¸ËÀº À§ÇèÇÏ´Ù
4.2.3. ÇØ°á¹æ¾È - ÃßÃâ ¹× Á¦°Å
4.3. ÆÄÀÏ ±â¼úÀÚ
4.4. ÆÄÀÏ ÄÁÅÙÃ÷
4.5. À¥ ±â¹Ý ¾ÖÇø®ÄÉÀÌ¼Ç ÀÔ·Â (ƯÈ÷ CGI ½ºÅ©¸³Æ®)
4.6. ´Ù¸¥ ÀÔ·Â
4.7. Àΰ£ ¾ð¾î (·ÎÄÉÀÏ) ¼±ÅÃ
4.7.1. ·ÎÄÉÀÏ ¼±Åà ¹æ¹ý
4.7.2. ·ÎÄÉÀÏ Áö¿ø ¸ÞÄ«´ÏÁò
4.7.3. ÇÕ¹ýÀûÀÎ °ª
4.7.4. ÃÖÁ¾ °á°ú
4.8. ¹®ÀÚ ÀÎÄÚµù
4.8.1. ¹®ÀÚ ÀÎÄÚµù ¼Ò°³
4.8.2. UTF-8 ¼Ò°³
4.8.3. UTF-8 º¸¾È ÀïÁ¡
4.8.4. UTF-8 ÇÕ¹ýÀûÀÎ °ª
4.8.5. UTF-8 ºñÇÕ¹ýÀûÀÎ °ª
4.8.6. UTF-8 °ü·Ã ÀïÁ¡
4.9. ÀԷ¿¡¼­ ±³Â÷ »çÀÌÆ®ÀÇ ¾ÇÀÇÀÖ´Â ÄÁÅÙÆ®¸¦ ¿¹¹æÇضó
4.10. ´Ù½Ã º¸³»Áú ¼öµµ ÀÖ´Â HTML/URIs ¸¦ ÇÊÅ͸µÇضó
4.10.1. ¾î¶² HTML µ¥ÀÌŸ¸¦ Á¦°Å ¹× ±ÝÁöÇØ¶ó
4.10.2. HTML µ¥ÀÌŸ ÀÎÄÚµù
4.10.3. HTML µ¥ÀÌŸ È®ÀÎ
4.10.4. ÇÏÀÌÆÛÅØ½ºÆ® ¸µÅ© (URIs/URLs) È®ÀÎ
4.10.5. ´Ù¸¥ HTML ű×
4.10.6. °ü·Ã ÀïÁ¡
4.11. ºñÁúÀǸ¦ ¼öÇàÇÏ´Â HTTP GET À» ±ÝÁöÇØ¶ó
4.12. ÇÕ´çÇÑ ÀÔ·Â ½Ã°£ ¹× ·Îµå ·¹º§À» Á¦ÇÑÇØ¶ó

¾î¶² ÀÔ·ÂÀº ½Å·ÚÇÒ ¼ö ¾ø´Â »ç¿ëÀڷκÎÅÍ ¿Ã ¼ö Àִµ¥ ÀÌ·± ÀԷµéÀº »ç¿ëÇϱâ Àü¿¡ ±× Á¤´ç¼ºÀ» ÀÔÁõÇϰųª ÇÊÅ͸µµÇ¾î¾ß ÇÑ´Ù. ¹«¾ùÀÌ ÇÕ¹ýÀûÀÎ °ÍÀΰ¡¸¦ °áÁ¤Çؼ­ ±× Á¤ÀÇ¿Í ÀÏÄ¡ÇÏ´Â ¾Ê´Â ¸ðµç °ÍÀ» °ÅÀýÇØ¾ß ÇÑ´Ù. ¹«¾ùÀÌ ºñÇÕ¹ýÀûÀÎ °ÍÀΰ¡¸¦ ½Äº°Çؼ­ ±×·¯ÇÑ °æ¿ì¸¦ °ÅÀýÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ´Â °Í°ú °°Àº ¹Ý´ëÀÇ °æ¿ì´Â ÇÏÁö¸¶¶ó. ºñÇÕ¹ýÀûÀÎ ÀԷ°ú °°Àº Áß¿äÇÑ ¹®Á¦¸¦ ´Ù·ç´Â °ÍÀ» ÀØÀ» ¼ö Àֱ⶧¹®ÀÌ´Ù.

±×·¸Áö¸¸ ºñÇÕ¹ýÀûÀÎ °ªÀ» ½Äº°ÇØ¾ß ÇÏ´Â ÈǸ¢ÇÑ ÀÌÀ¯°¡ Àִµ¥ ÀÌ´Â ¹Ýµå½Ã È®ÀÎ (validation) Äڵ带 öµÎö¹ÌÇÏ°Ô ÀÛ¼ºÇϱâ À§ÇÑ ÀÏ·ÃÀÇ Å×½ºÆ® (º¸Åë ¸Ó¸®¼Ó¿¡¼­ ½ÇÇàµÇ´Â) ¿Í °°´Ù. ÀúÀÚ´Â ÀÔ·Â ÇÊÅ͸¦ ¼³Á¤ÇÒ ¶§ ÇÊÅ͸µµÇÁö ¾ÊÀ» ¼ö ÀÖ´Â ºñÇÕ¹ýÀûÀÎ °ªÀÌ ÀÖ´ÂÁö º¸±â À§ÇØ ¸¶À½¼ÓÀ¸·Î ÇÊÅ͸¦ °ø°ÝÇÑ´Ù. ´ÙÀ½Àº ÀԷ¿¡ µû¶ó ÀÔ·Â ÇÊÅͰ¡ ¿¹¹æÇÒ Çʿ䰡 ÀÖ´Â °øÅëµÈ ºñÇÕ¹ýÀûÀÎ °ªµéÀÇ ¿¹ÀÌ´Ù: ºó ¹®ÀÚ¿­, ".", "..", "../", "/" ¶Ç´Â "." ·Î ½ÃÀÛÇÏ´Â ¸ðµç °Í, ¾È¿¡ "/" ¶Ç´Â "&" °¡ ÀÖ´Â ¸ðµç °Í, ¸ðµç Á¦¾î ¹®ÀÚ (ƯÈ÷ NIL °ú °³Çà) ¿Í/¶Ç´Â "high bit" ÀÌ ¼³Á¤µÇ¾î ÀÖ´Â ¸ðµç ¹®ÀÚ (ƯÈ÷ ½ÊÁø¼ö 254 ¿Í 255 °ª). ´Ù½Ã Çѹø ÀÛ¼ºÇÑ ÄÚµå´Â "bad" °ª¿¡ ´ëÇØ °Ë»çµÇÁö ¾Ê¾Æ¾ß ÇÑ´Ù: ¹Ýµå½Ã ÆÐÅÏÀÌ ÀÔ·Â °ªÀ» ÇÕ¹ýÀûÀÎ °ªÀ¸·Î ¾ö°ÝÈ÷ Á¦ÇÑÇϵµ·Ï À̸¦ ¸¶À½¼ÓÀ¸·Î °Ë»çÇØ¾ß ÇÑ´Ù. ÆÐÅÏÀÌ ÃæºÐÈ÷ ¾ö¹ÐÇÏÁö ¾Ê´Ù¸é ´Ù¸¥ ¹®Á¦°¡ ÀÖ´Â Áö¸¦ »ìÆì º¸±â À§ÇØ ÆÐÅÏÀ» ÁÖÀDZí°Ô ÀçÁ¶»çÇØ¾ß ÇÑ´Ù.

ÃÖ´ë ¹®ÀÚ ±æÀÌ (ÀûÀýÇÏ´Ù¸é ÃÖ¼Ò ±æÀÌ) ¸¦ Á¦ÇÑÇÏ°í ±×·¯ÇÑ ±æÀ̰¡ ÃʰúµÉ ¶§ ¹Ýµå½Ã Á¦¾î°¡ µÇµµ·Ï ÇØ¶ó (¹öÆÛ ¿À¹öÇ÷ο쿡 ´ëÇÑ ´õ¿í ¸¹Àº Á¤º¸´Â 5장 À» ÂüÁ¶Çضó).

¹®ÀÚ¿­¿¡ ´ëÇØ¼­´Â ÇÕ¹ýÀû ¹®ÀÚ ¶Ç´Â ÇÕ¹ýÀû ÆÐÅÏ (¿¹, Á¤±Ô Ç¥ÇöÀ¸·Î½á) À» ½Äº°Çؼ­ ±× ÇüÅÂ¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â ¸ðµç °ÍÀ» °ÅÀýÇØ¶ó. ¹®ÀÚ¿­ÀÌ Á¦¾î ¹®ÀÚ (ƯÈ÷ °³Çà ¶Ç´Â NIL) ¶Ç´Â ½© ¸ÞŸ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¶§´Â Ưº°ÇÑ ¹®Á¦°¡ ÀÖ´Ù; Á¾Á¾ ÀÔ·ÂÀ» ¹ÞÀÚ¸¶ÀÚ ±×·¯ÇÑ ¸ÞŸ¹®ÀÚ°¡ ¶æÇÏÁö ¾Ê°Ô º¸³»ÁöÁö ¾Êµµ·Ï ±×·¯ÇÑ ¸ÞŸ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ ( escape, ÀÇ¹Ì ÇØÁ¦) ÇÏ´Â °ÍÀÌ ÃÖ¼±´Ù. CERT ´Â ´õ ³ª¾Æ°¡¼­ À̽ºÄÉÀÌÇÁ¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â ¹®ÀÚ ¸ñ·Ï¿¡ ¾ø´Â ¸ðµç ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁÇ϶ó°í ÃßõÇÑ´Ù [CERT 1998, CMU 1998]. È£Ãâ (call out) Á¦ÇÑ¿¡ ´ëÇØ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â 7.2절 À» º¸¶ó.

¸ðµç ¼ýÀÚ¸¦ ÃÖ¼Ò (Á¾Á¾ 0) ¿Í ÃÖ´ë Çã¿ë °ªÀ¸·Î Á¦ÇÑÇØ¶ó. ÆÄÀÏ À̸§µµ È®ÀÎÇØ¾ß Çϴµ¥ º¸Åë ÇÕ¹ýÀû À̸§¿¡ ".." (»óÀ§ µð·ºÅ丮¸¦ ÀǹÌÇÑ´Ù) ¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ÆÄÀÏ À̸§¿¡¼­ ¿¹¸¦ µé¾î ÀÏ·ÃÀÇ ÇÕ¹ýÀû ¹®ÀÚ¿¡ "/" ¸¦ Æ÷ÇÔÇÏÁö ¾ÊÀ½À¸·Î½á µð·ºÅ丮³»ÀÇ ¸ðµç º¯°æÀ» ±ÝÁöÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÌ´Ù. À̸ÞÀÏ ÁÖ¼Ò¸¦ ¿Ïº®ÇÏ°Ô È®ÀÎÇÏ´Â ÇÁ·Î±×·¥Àº ¸ðµç Æ÷¸ËÀ» Áö¿øÇÏ·Á°í ÇÒ ¶§ È®ÀÎ (validation) À» ¸Å¿ì º¹ÀâÇÏ°Ô ÇÏ´Â ·¹°Å½Ã Æ÷¸Ë (legacy format, ±âÁ¸ÀÇ ¸ðµç Æ÷¸Ë ) ÀÌ Àֱ⠶§¹®¿¡ ½ÇÁ¦·Î ¾ÆÁÖ º¹ÀâÇÏ´Ù: ±×·¯ÇÑ È®ÀÎÀÌ ÇÊ¿äÇÏ´Ù¸é ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â mailaddr(7) °ú IEFT RFC 822 [RFC 822] ¸¦ º¸¶ó.

À§¿¡ ¾ð±ÞÇÑ »çÇ×À» °í·ÁÇÏÁö ¾Ê´Â´Ù¸é ÇÕ¹ýÀû ¹®ÀÚ ÆÐÅÏ¿¡ ÇÁ·Î±×·¥ ³»ºÎ ¶Ç´Â °á°ú·Î½á »ý±â´Â Ãâ·Â¿¡ Ưº°ÇÑ Àǹ̸¦ °®´Â ¹®ÀÚ ¶Ç´Â ÀÏ·ÃÀÇ ¹®ÀÚµéÀ» Æ÷ÇÔÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù:

ÀÌ·¯ÇÑ Å×½ºÆ®´Â ÃßÈÄ ¼öÁ¤À» À§ÇØ À¯È¿ Å×½ºÆ®¸¦ ½±°Ô »ìÆìº¼ ¼ö ÀÖµµ·Ï ÇÑ °÷¿¡ ÁýÁߵǾî¾ß ÇÑ´Ù.

À¯È¿ Å×½ºÆ®°¡ ½ÇÁ¦·Î Á¤È®ÇÔÀ» È®ÀÎÇØ¶ó; ÀÌ´Â ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ÀÔ·Â (ÆÄÀÏ À̸§, À̸ÞÀÏ ÁÖ¼Ò ¶Ç´Â URL µî) À» °Ë»çÇÒ ¶§ ƯÈ÷ ¹®Á¦°¡ µÈ´Ù. Á¾Á¾ ÀÌ·¯ÇÑ Å×½ºÆ®´Â °Ë»ç ÇÁ·Î±×·¥°ú ½ÇÁ¦ µ¥ÀÌŸ¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ °¡Á¤À» ÇÏ´Â °æ¿ì ¹Ì¹¦ÇÑ ¿¡·¯¸¦ °®´Âµ¥ ¼ÒÀ§ "´ë¸® (deputy) ¹®Á¦" ¸¦ ¾ß±âÇÑ´Ù. °ü·ÃµÈ Ç¥ÁØÀÌ ÀÖ´Ù¸é À̸¦ »ìÆìº¸°í ¶ÇÇÑ ÇÁ·Î±×·¥ÀÌ °¢ÀÚ°¡ ¾Ë Çʿ䰡 ÀÖ´Â È®ÀåÀ» °¡Áö°í ÀÖ´ÂÁö »ìÆìº¸±â À§ÇØ °Ë»öÇØ¶ó.

»ç¿ëÀÚ ÀÔ·ÂÀ» ÇØ¼®ÇÒ ¶§ ÀϽÃÀûÀ¸·Î ¸ðµç ±ÇÇÑÀ» ¾ø¾Ö°Å³ª ´õ ³ª¾Æ°¡¼­ º°°³ÀÇ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ´Â °Í (ÆÄ¼­ÀÇ ±ÇÇÑÀ» ¿µ±¸ÀûÀ¸·Î ¾ø¾Ö°í ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÆÄ¼­ ¿äû¿¡ ´ëÇØ º¸¾È °Ë»ç¸¦ ¼öÇàÇÑ´Ù) Àº ÁÁÀº »ý°¢ÀÌ´Ù. ÀÌ´Â ÆÄ½Ì ŽºÅ©°¡ º¹ÀâÇϰųª (lex ¶Ç´Â yacc ¿Í À¯»çÇÑ µµ±¸¸¦ »ç¿ëÇÏ´Â °æ¿ì) ¶Ç´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î (¿¹, C ¿Í C++) °¡ ¹öÆÛ ¿À¹öÇ÷ο쿡 ´ëÇØ º¸È£µÇÁö ¾Ê´Â´Ù¸é ƯÈ÷ µé¾î¸Â´Â´Ù. ±ÇÇÑ ÃÖ¼ÒÈ­¿¡ ´ëÇØ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§Çؼ­´Â 6.3절 À» ÂüÁ¶Çضó.

´ÙÀ½ ÇϺΠÀýÀº ´Ù¾çÇÑ Á¾·ùÀÇ ÀÔ·ÂÀ» ³íÀÇÇÑ´Ù; ÀÔ·ÂÀº ȯ°æ º¯¼ö, umask °ª µî°ú °°Àº ÇÁ·Î¼¼½º »óŸ¦ Æ÷ÇÔÇÔÀ» ÁÖ¸ñÇØ¶ó. ¸ðµç ÀÔ·ÂÀÌ ½Å·ÚÇÒ ¼ö ¾ø´Â »ç¿ëÀÚ¿¡ ÀÇÇØ Á¦¾îµÉ ¼ö´Â ¾ø´Âµ¥ µû¶ó¼­ ÀÌ·¯ÇÑ »ç¿ëÀÚ°¡ Á¦¾îÇÒ ¼ö ÀÖ´Â ±×·¯ÇÑ ÀԷ¿¡ ´ëÇØ¼­¸¸ ÁÖÀǸ¦ ±â¿ïÀÌ¸é µÈ´Ù.