Wisdom will save you from the ways of wicked men, from men whose words are perverse... | |
Proverbs 2:12 (NIV) |
¾î¶² ÀÔ·ÂÀº ½Å·ÚÇÒ ¼ö ¾ø´Â »ç¿ëÀڷκÎÅÍ ¿Ã ¼ö Àִµ¥ ÀÌ·± ÀԷµéÀº »ç¿ëÇϱâ Àü¿¡ ±× Á¤´ç¼ºÀ» ÀÔÁõÇϰųª ÇÊÅ͸µµÇ¾î¾ß ÇÑ´Ù. ¹«¾ùÀÌ ÇÕ¹ýÀûÀÎ °ÍÀΰ¡¸¦ °áÁ¤Çؼ ±× Á¤ÀÇ¿Í ÀÏÄ¡ÇÏ´Â ¾Ê´Â ¸ðµç °ÍÀ» °ÅÀýÇØ¾ß ÇÑ´Ù. ¹«¾ùÀÌ ºñÇÕ¹ýÀûÀÎ °ÍÀΰ¡¸¦ ½Äº°Çؼ ±×·¯ÇÑ °æ¿ì¸¦ °ÅÀýÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ´Â °Í°ú °°Àº ¹Ý´ëÀÇ °æ¿ì´Â ÇÏÁö¸¶¶ó. ºñÇÕ¹ýÀûÀÎ ÀԷ°ú °°Àº Áß¿äÇÑ ¹®Á¦¸¦ ´Ù·ç´Â °ÍÀ» ÀØÀ» ¼ö Àֱ⶧¹®ÀÌ´Ù.
±×·¸Áö¸¸ ºñÇÕ¹ýÀûÀÎ °ªÀ» ½Äº°ÇØ¾ß ÇÏ´Â ÈǸ¢ÇÑ ÀÌÀ¯°¡ Àִµ¥ ÀÌ´Â ¹Ýµå½Ã È®ÀÎ (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] ¸¦ º¸¶ó.
À§¿¡ ¾ð±ÞÇÑ »çÇ×À» °í·ÁÇÏÁö ¾Ê´Â´Ù¸é ÇÕ¹ýÀû ¹®ÀÚ ÆÐÅÏ¿¡ ÇÁ·Î±×·¥ ³»ºÎ ¶Ç´Â °á°ú·Î½á »ý±â´Â Ãâ·Â¿¡ Ưº°ÇÑ Àǹ̸¦ °®´Â ¹®ÀÚ ¶Ç´Â ÀÏ·ÃÀÇ ¹®ÀÚµéÀ» Æ÷ÇÔÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù:
¹®ÀÚ ½ÃÄö½º (sequence) ´Â ÇÁ·Î±×·¥ ³»ºÎ ½ºÅ丮Áö Æ÷¸Ë¿¡ ´ëÇØ Ưº°ÇÑ Àǹ̸¦ °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ¹üÀ§¸¦ °®´Â ¹®ÀÚ¿ (delimited strings) ¿¡ µ¥ÀÌŸ¸¦ (³»ºÎÀû ¶Ç´Â ¿ÜºÎÀûÀ¸·Î) ÀúÀåÇÏ·Á¸é ºÐ¸®ÀÚ (delimiter) °¡ Çã¿ëµÈ µ¥ÀÌŸ °ªÀÌ ¾Æ´ÔÀ» È®ÀÎÇØ¶ó. ¸¹Àº ÇÁ·Î±×·¥Àº ÄÞ¸¶ (,) ¶Ç´Â ÄÝ·Ð (:) À¸·Î ºÐ¸®µÈ ÅØ½ºÆ® ÆÄÀÏ¿¡ µ¥ÀÌŸ¸¦ ÀúÀåÇϴµ¥ ÀԷ¿¡ ºÐ¸®ÀÚ¸¦ ½á³ÖÀ» ¶§ ÇÁ·Î±×·¥ÀÌ À̸¦ °í·ÁÇÏÁö ¾Ê´Â´Ù¸é (Áï, ºÐ¸®ÀÚ¸¦ ½á³Ö´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê°Å³ª ¾î¶² ¹æ½ÄÀ¸·Î À̸¦ ÀÎÄÚµåÇÔÀ¸·Î½á) ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù. ¹®ÀÚ¿À» µÑ·¯½Î´Âµ¥ »ç¿ëµÇ´Â ´Üµ¶ ¹× ÀÌÁß ÀοëºÎÈ£¿Í SGML, XML °ú HTML ¿¡¼ ÅÂ±× ½ÃÀÛÀ» ³ªÅ¸³»´Â "<" (less-than) (ÀÌ Æ÷¸ËÀ¸·Î µ¥ÀÌŸ¸¦ ÀúÀåÇÏ´Â °æ¿ì ÀÌ´Â Áß¿äÇÏ´Ù) µéÀº Á¾Á¾ ÀÌ·± ¹®Á¦¸¦ ÀÏÀ¸Å°´Â ¹®ÀÚµéÀÌ´Ù. ´ëºÎºÐÀÇ µ¥ÀÌŸ Æ÷¸ËÀº ÀÌ·± °æ¿ì¸¦ ´Ù·ç±â À§ÇØ À̽ºÄÉÀÌÇÁ ½ÃÄö½º¸¦ °®°í ÀÖ´Ù; À̸¦ »ç¿ëÇϰųª ÀԷ½à ÀÌ·± µ¥ÀÌŸ¸¦ ÇÊÅ͸µÇضó.
¹®ÀÚ ½ÃÄö½º°¡ »ç¿ëÀÚ¿¡°Ô µÇµ¹·ÁÁö´Â °æ¿ì Ưº°ÇÑ Àǹ̸¦ °¡Áú ¼ö ÀÖ´Ù. °øÅëµÈ ¿¹´Â ÃßÈÄ ´Ù¸¥ ±¸µ¶ÀÚ¿¡°Ô °Ô½ÃµÉ ¼ö ÀÖ´Â µ¥ÀÌŸ ÀԷ¿¡ HTML ű׸¦ Çã¿ëÇÏ´Â °æ¿ìÀÌ´Ù (¿¹, °Ô½ºÆ®ºÏ ¶Ç´Â "µ¶ÀÚ ÁÖÇØ" ¿µ¿ª). ±×·¯³ª ÀÌ·¯ÇÑ ¹®Á¦´Â ´õ¿í ÀϹÝÀûÀ̸ç ÀÌ ÁÖÁ¦¿¡ ´ëÇÑ ÀϹÝÀûÀÎ ³íÀÇ¿Í HTML ÇÊÅ͸µ¿¡ ´ëÇÑ Æ¯Á¤ÇÑ ³íÀǸ¦ º¸±â À§Çؼ´Â °¢°¢ 6.12절 °ú 4.10절 À» º¸¶ó.
ÀÌ·¯ÇÑ Å×½ºÆ®´Â ÃßÈÄ ¼öÁ¤À» À§ÇØ À¯È¿ Å×½ºÆ®¸¦ ½±°Ô »ìÆìº¼ ¼ö ÀÖµµ·Ï ÇÑ °÷¿¡ ÁýÁߵǾî¾ß ÇÑ´Ù.
À¯È¿ Å×½ºÆ®°¡ ½ÇÁ¦·Î Á¤È®ÇÔÀ» È®ÀÎÇØ¶ó; ÀÌ´Â ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ÀÔ·Â (ÆÄÀÏ À̸§, À̸ÞÀÏ ÁÖ¼Ò ¶Ç´Â URL µî) À» °Ë»çÇÒ ¶§ ƯÈ÷ ¹®Á¦°¡ µÈ´Ù. Á¾Á¾ ÀÌ·¯ÇÑ Å×½ºÆ®´Â °Ë»ç ÇÁ·Î±×·¥°ú ½ÇÁ¦ µ¥ÀÌŸ¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ °¡Á¤À» ÇÏ´Â °æ¿ì ¹Ì¹¦ÇÑ ¿¡·¯¸¦ °®´Âµ¥ ¼ÒÀ§ "´ë¸® (deputy) ¹®Á¦" ¸¦ ¾ß±âÇÑ´Ù. °ü·ÃµÈ Ç¥ÁØÀÌ ÀÖ´Ù¸é À̸¦ »ìÆìº¸°í ¶ÇÇÑ ÇÁ·Î±×·¥ÀÌ °¢ÀÚ°¡ ¾Ë Çʿ䰡 ÀÖ´Â È®ÀåÀ» °¡Áö°í ÀÖ´ÂÁö »ìÆìº¸±â À§ÇØ °Ë»öÇØ¶ó.
»ç¿ëÀÚ ÀÔ·ÂÀ» ÇØ¼®ÇÒ ¶§ ÀϽÃÀûÀ¸·Î ¸ðµç ±ÇÇÑÀ» ¾ø¾Ö°Å³ª ´õ ³ª¾Æ°¡¼ º°°³ÀÇ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ´Â °Í (ÆÄ¼ÀÇ ±ÇÇÑÀ» ¿µ±¸ÀûÀ¸·Î ¾ø¾Ö°í ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ÆÄ¼ ¿äû¿¡ ´ëÇØ º¸¾È °Ë»ç¸¦ ¼öÇàÇÑ´Ù) Àº ÁÁÀº »ý°¢ÀÌ´Ù. ÀÌ´Â ÆÄ½Ì ŽºÅ©°¡ º¹ÀâÇϰųª (lex ¶Ç´Â yacc ¿Í À¯»çÇÑ µµ±¸¸¦ »ç¿ëÇÏ´Â °æ¿ì) ¶Ç´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î (¿¹, C ¿Í C++) °¡ ¹öÆÛ ¿À¹öÇ÷ο쿡 ´ëÇØ º¸È£µÇÁö ¾Ê´Â´Ù¸é ƯÈ÷ µé¾î¸Â´Â´Ù. ±ÇÇÑ ÃÖ¼ÒÈ¿¡ ´ëÇØ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§Çؼ´Â 6.3절 À» ÂüÁ¶Çضó.
´ÙÀ½ ÇϺΠÀýÀº ´Ù¾çÇÑ Á¾·ùÀÇ ÀÔ·ÂÀ» ³íÀÇÇÑ´Ù; ÀÔ·ÂÀº ȯ°æ º¯¼ö, umask °ª µî°ú °°Àº ÇÁ·Î¼¼½º »óŸ¦ Æ÷ÇÔÇÔÀ» ÁÖ¸ñÇØ¶ó. ¸ðµç ÀÔ·ÂÀÌ ½Å·ÚÇÒ ¼ö ¾ø´Â »ç¿ëÀÚ¿¡ ÀÇÇØ Á¦¾îµÉ ¼ö´Â ¾ø´Âµ¥ µû¶ó¼ ÀÌ·¯ÇÑ »ç¿ëÀÚ°¡ Á¦¾îÇÒ ¼ö ÀÖ´Â ±×·¯ÇÑ ÀԷ¿¡ ´ëÇØ¼¸¸ ÁÖÀǸ¦ ±â¿ïÀÌ¸é µÈ´Ù.