Visual C# .NETÀ» »ç¿ëÇÏ¿© Æû ÀÎÁõ¿¡¼­ »ç¿ëÇÒ Å°¸¦ ¸¸µå´Â ¹æ¹ý

±â¼ú ÀÚ·á: 312906 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

ÀÌ ÆäÀÌÁö¿¡¼­

¿ä¾à

ÀÌ ¹®¼­¿¡¼­´Â Æû ÀÎÁõ ÄíŰ µ¥ÀÌÅÍÀÇ ¾Ïȣȭ, ÇØµ¶, À¯È¿¼º °Ë»ç¿¡ »ç¿ëÇÒ Å°¸¦ ¸¸µå´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. ÀÌ ¹®¼­¿¡¼­ ¸¸µç ۸¦ Machine.config ÆÄÀÏÀÇ <system.web> ¿ä¼Ò¿¡ ÀÖ´Â <machineKey> ¼½¼ÇÀÇ validationKey ¹× decryptionKey Ư¼º¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


¿ä±¸ »çÇ×

´ÙÀ½Àº ±ÇÀåµÇ´Â Çϵå¿þ¾î, ¼ÒÇÁÆ®¿þ¾î ¹× ³×Æ®¿öÅ© ÀÎÇÁ¶ó¿Í ÇÊ¿äÇÑ ¼­ºñ½º ÆÑÀÇ ¸ñ·ÏÀÔ´Ï´Ù.
  • Microsoft Windows 2000 ¶Ç´Â Microsoft Windows XP
  • Microsoft .NET Framework
  • Microsoft Internet Information Services(IIS)

ÇÁ·ÎÁ§Æ® ¸¸µé±â

Visual C# .NET ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥À» ¸¸µì´Ï´Ù.
  1. Visual Studio .NETÀ» ½ÃÀÛÇÕ´Ï´Ù.
  2. ÆÄÀÏ ¸Þ´º¿¡¼­ »õ·Î ¸¸µé±â¸¦ °¡¸®Å² ´ÙÀ½ ÇÁ·ÎÁ§Æ®¸¦ ´©¸¨´Ï´Ù.
  3. ÇÁ·ÎÁ§Æ® Çü½Ä¿¡¼­ Visual C# ÇÁ·ÎÁ§Æ®¸¦ ´©¸¨´Ï´Ù.
  4. ÅÛÇø´¿¡¼­ ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥À» ´©¸¨´Ï´Ù.
  5. ÇÁ·ÎÁ§Æ® À̸§À» HashConfigCs·Î ÁöÁ¤ÇÕ´Ï´Ù.
  6. È®ÀÎÀ» ´©¸¨´Ï´Ù.

۸¦ »ý¼ºÇÏ´Â ÄÚµå ÀÛ¼º

´ÙÀ½ ÄÚµå´Â ¸í·ÉÁÙ¿¡¼­ Àü´ÞµÇ´Â µÎ Àμö¸¦ ÀнÀ´Ï´Ù.
  • ù ¹øÂ° Àμö´Â decryptionKey Ư¼ºÀ» ¸¸µå´Â µ¥ »ç¿ëµÇ´Â ¹ÙÀÌÆ® ¼öÀÔ´Ï´Ù.
  • µÎ ¹øÂ° Àμö´Â validationKey Ư¼ºÀ» ¸¸µå´Â µ¥ »ç¿ëµÇ´Â ¹ÙÀÌÆ® ¼öÀÔ´Ï´Ù.
ÄÚµå´Â ³­¼ö »ý¼º±â¸¦ »ç¿ëÇÏ¿© ¸í·ÉÁÙ Àμö¿¡ µû¶ó ÀÓÀÇÀÇ ¼öÀÇ ¹ÙÀÌÆ®¸¦ ¸¸µì´Ï´Ù. ÀÓÀÇÀÇ ¹ÙÀÌÆ®¸¦ ¸¸µç ÈÄ¿¡´Â .config ÆÄÀÏ¿¡¼­ »ç¿ëÇϱ⿡ ÀûÀýÇÑ 16Áø¼ö ¹®ÀÚ¿­·Î ¹ÙÀÌÆ®ÀÇ ¼­½ÄÀÌ ÁöÁ¤µË´Ï´Ù.

Âü°í ¸í·ÉÁÙ¿¡¼­ Àü´ÞµÇ´Â °ª Å©±âÀÇ µÎ¹è¿¡ ÇØ´çÇÏ´Â 16Áø¼ö ¹®ÀÚ¿­ÀÌ ¸¸µé¾îÁý´Ï´Ù. ¿¹¸¦ µé¾î, Ű¿¡ 24¹ÙÀÌÆ®¸¦ ÁöÁ¤ÇÏ¸é º¯È¯ ÈÄ ¸¸µé¾îÁø ¹®ÀÚ¿­ ±æÀÌ´Â 48¹ÙÀÌÆ®°¡ µË´Ï´Ù. decryptionKeyÀÇ À¯È¿ÇÑ °ªÀº 8 ¶Ç´Â 24ÀÔ´Ï´Ù. À̰ÍÀº °¢°¢ DES(µ¥ÀÌÅÍ ¾Ïȣȭ Ç¥ÁØ)¿¡ ´ëÇØ 16¹ÙÀÌÆ® ۸¦ ¸¸µé°Å³ª »ïÁß DES¿¡ ´ëÇØ 48¹ÙÀÌÆ® ۸¦ ¸¸µì´Ï´Ù. validationKeyÀÇ À¯È¿ÇÑ °ªÀº 20-64ÀÔ´Ï´Ù. À̰ÍÀº 40-128¹ÙÀÌÆ® ±æÀÌÀÇ Å°¸¦ ¸¸µì´Ï´Ù. ÄÚµåÀÇ Ãâ·ÂÀº Machine.config ÆÄÀÏ·Î º¹»çÇÏ¿© ºÙ¿©³ÖÀ» ¼ö ÀÖ´Â <machineKey> ¿ä¼Ò ÀüüÀÔ´Ï´Ù.

´ÙÀ½ Äڵ带 .cs ÆÄÀÏ¿¡ Ãß°¡ÇÕ´Ï´Ù.
using System;
using System.Text;
using System.Security.Cryptography;

namespace Crypto
{
    public class KeyCreator
    {
        public static void Main(String[] args)
        {			
            String[] commandLineArgs = System.Environment.GetCommandLineArgs();
            string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
            string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));

            Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey);
        }	

        static String CreateKey(int numBytes) 
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            byte[] buff = new byte[numBytes];

            rng.GetBytes(buff);
            return BytesToHexString(buff);
        }

        static String BytesToHexString(byte[] bytes) 
        {
            StringBuilder hexString = new StringBuilder(64);

            for (int counter = 0; counter < bytes.Length; counter++) 
            {
                hexString.Append(String.Format("{0:X2}", bytes[counter]));
            }
            return hexString.ToString();
        }
    }
}
				

ÇØ½Ã »ý¼º

ÀÌÁ¦ ÀÀ¿ë ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÇØµ¶ Ű¿Í À¯È¿¼º °Ë»ç ŰÀÇ Å©±â¿¡ ÇØ´çÇÏ´Â µÎ °³ÀÇ Á¤¼ö °ªÀ» Àü´ÞÇÏ¿© ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥¿¡ HashConfigCs.exe¶ó´Â À̸§À» ÁöÁ¤ÇÑ °æ¿ì¿¡´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Bin\debug µð·ºÅ͸®ÀÇ ¸í·ÉÁÙ¿¡¼­ ´ÙÀ½ ±¸¹®À» ÀÔ·ÂÇÕ´Ï´Ù.
hashconfigcs.exe 24 64
ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¾Æ·¡¿Í ºñ½ÁÇÑ Ãâ·ÂÀ» ¹ÝȯÇÕ´Ï´Ù.
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77" validation="SHA1"/>
Âü°í Äڵ尡 ³­¼ö »ý¼º±â¸¦ »ç¿ëÇϹǷΠ¸Å¹ø Ãâ·ÂÀÌ ´Þ¶óÁý´Ï´Ù.


±¸¼º ÆÄÀÏ ¾÷µ¥ÀÌÆ®

  1. Machine.config ÆÄÀÏÀ» ã½À´Ï´Ù.
  2. ±¸¼º ÆÄÀÏ¿¡¼­ <system.web> ¼½¼ÇÀ» ã½À´Ï´Ù.
  3. <machineKey> ¼½¼ÇÀ» ÄÜ¼Ö ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ¸·Î ´ëüÇÕ´Ï´Ù. <machineKey> ¼½¼ÇÀÌ ¾øÀ¸¸é »õ·Î ¸¸µì´Ï´Ù.
  4. ±¸¼º ÆÄÀÏÀ» ÀúÀåÇÕ´Ï´Ù.
  5. À¥ ÆÊÀÇ ¸ðµç ¼­¹ö¿¡¼­ IIS¸¦ ´Ù½Ã ½ÃÀÛÇÏ¿© Machine.config º¯°æ »çÇ×ÀÌ ¹Ý¿µµÇµµ·Ï ÇÕ´Ï´Ù.

¹®Á¦ ÇØ°á

´ÙÀ½ ½Ã³ª¸®¿ÀÀÇ °æ¿ì <machineKey> ¼½¼ÇÀÌ À¥ ÆÊ °£¿¡ µ¿ÀÏÇÑ ¸í½ÃÀû ۸¦ °®°í ÀÖ´ÂÁö(Áï, <machineKey> ¼½¼ÇÀÇ Æ¯¼º¿¡ ´ëÇØ AutoGenerate ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾Ê´ÂÁö) È®ÀÎÇϽʽÿÀ.
  • Æû ÀÎÁõÀ» »ç¿ëÇÏ´Â °æ¿ì
  • StateServer ¸ðµå¿¡¼­ ¼¼¼Ç »óŸ¦ ½ÇÇàÇÏ´Â °æ¿ì
  • ±âº»ÀûÀ¸·Î enableViewStateMAC Ư¼ºÀÌ True·Î ¼³Á¤µÇ¾î Àֱ⠶§¹®¿¡ À¥ ÆÊ °£¿¡ ViewState¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ·Á´Â °æ¿ì

Ãß°¡ Á¤º¸

machineKey ¼½¼ÇÀº ´ÙÀ½ °æ¿ìÀÇ À¥ ÆÊ°ú °°¾Æ¾ß ÇÕ´Ï´Ù.
  • Æû ÀÎÁõÀ» »ç¿ëÇÏ´Â °æ¿ì
  • StateServer ¸ðµå¿¡¼­ ¼¼¼Ç »óŸ¦ ½ÇÇàÇÏ´Â °æ¿ì
  • enableViewStateMacÀÌ ±âº»ÀûÀ¸·Î ¼³Á¤µÇ¾î Àֱ⠶§¹®¿¡ À¥ ÆÊ °£¿¡ viewstate¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ·Á´Â °æ¿ì

ÂüÁ¶

ÀÚ¼¼ÇÑ ³»¿ëÀº Microsoft ±â¼ú ÀÚ·áÀÇ ´ÙÀ½ ¹®¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.
301240 C# .NETÀ» »ç¿ëÇÏ¿© ASP.NET ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Æû ±â¹Ý ÀÎÁõÀ» ±¸ÇöÇÏ´Â ¹æ¹ý
311495 Visual C# .NETÀ» »ç¿ëÇÏ¿© ASP.NET ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Æû ±â¹Ý ÀÎÁõÀ» °¡Áø ¿ªÇÒ ±â¹Ý º¸¾ÈÀ» ±¸ÇöÇÏ´Â ¹æ¹ý
306590 INFO: ASP.NET º¸¾È °³¿ä
307626 INFO: ASP.NET ±¸¼º °³¿ä




Microsoft Á¦Ç° °ü·Ã ±â¼ú Àü¹®°¡µé°ú ¿Â¶óÀÎÀ¸·Î Á¤º¸¸¦ ±³È¯ÇϽ÷Á¸é Microsoft ´º½º ±×·ì¿¡ Âü¿©ÇϽñ⠹ٶø´Ï´Ù.

¼Ó¼º

±â¼ú ÀÚ·á: 312906 - ¸¶Áö¸· °ËÅä: 2005³â 8¿ù 11ÀÏ ¸ñ¿äÀÏ - ¼öÁ¤: 3.9
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Ű¿öµå:?
kbconfig kbhowtomaster kbsecurity kbstate KB312906

Çǵå¹é º¸³»±â