ËÄ¡¢¼ÓÃÜÑ¡Ïî
¡¡¡¡¿ª·¢ÈËÔ±¿ÉÒÔʹÓÃASP.NET 2.0Ìṩ³ÌÐòÄ£ÐÍÀ´±£»¤ÅäÖýÚÐÅÏ¢£¬ÕâÔÊÐíÈκÎʵÏÖ¶¼¿ÉÒÔ±»ÎÞ·ìµØ²åÈëµ½¸ÃAPIÖС£.NET¿ò¼Ü2.0ÖÐÌṩÁËÁ½¸öÄÚÖõÄÌṩ³ÌÐòÓÃÓÚ±£»¤ÅäÖýÚÐÅÏ¢£º
¡¡¡¡· WindowsÊý¾Ý±£»¤API(DPAPI)Ìṩ³ÌÐò(DataProtectionConfigurationProvider)£ºÕâ¸öÌṩ³ÌÐòʹÓà WindowsÄÚÖõÄÃÜÂëѧ¼¼ÊõÀ´¼Ó½âÃÜÅäÖýڡ£Ä¬ÈÏÇé¿öÏ£¬Õâ¸öÌṩ³ÌÐòʹÓñ¾»úµÄÃÜÔ¿¡£Ä㻹Äܹ»Ê¹ÓÃÓû§ÃÜÔ¿£¬µ«ÊÇÕâÒªÇó½øÐÐÒ»µã¶¨ÖÆ¡£
¡¡¡¡· RSA±£»¤µÄÅäÖÃÌṩ³ÌÐò(RSAProtectedConfigurationProvider)£ºÊ¹ÓÃRSA¹«Ô¿¼ÓÃÜÀ´¼Ó½âÃÜÅäÖýڡ£Ê¹ÓÃÕâ¸öÌṩ³ÌÐò£¬ÄãÐèÒª´´½¨´æ´¢ÓÃÓÚ¼Ó½âÃÜÅäÖÃÐÅÏ¢µÄ¹«Ô¿ºÍ˽ԿµÄÃÜÔ¿ÈÝÆ÷¡£ÄãÄܹ»ÔÚÒ»¸ö¶à·þÎñÆ÷³¡ËùÏÂʹÓÃRSA£¬ÕâÖ»Òª´´½¨¿ÉÊä³öµÄÃÜÔ¿ÈÝÆ÷¼´¿É¡£
µ±È»£¬Èç¹ûÐèÒªµÄ»°£¬Ä㻹Äܹ»´´½¨×Ô¼ºµÄ±£»¤ÉèÖÃÌṩ³ÌÐò¡£
¡¡¡¡ÔÚ±¾ÎÄÖУ¬ÎÒÃǽöÌÖÂÛʹÓÃDPAPIÌṩ³ÌÐòʹÓûúÆ÷¼¶ÃÜÔ¿¡£µ½Ä¿Ç°ÎªÖ¹£¬ÕâÊÇ×î¼òµ¥µÄ·½·¨£¬ÒòΪËü²»ÇëÇó´´½¨ÈκÎÃÜÔ¿»òÃÜÔ¿ÈÝÆ÷¡£µ±È»£¬ÆäÏû¼«µÄÒ»ÃæÔÚÓÚ£ºÒ»¸ö¼ÓÃܵÄÅäÖÃÎļþ½öÄܹ»ÓÃÓÚÊ×ÏÈʵÏÖ¼ÓÃܵÄweb·þÎñÆ÷ÉÏ£»¶øÇÒ£¬Ê¹ÓûúÆ÷ÃÜÔ¿½«ÔÊÐí¼ÓÃܵÄÎı¾Äܹ»±»web·þÎñÆ÷ÉϵÄÈκÎÍøÕ¾Ëù½âÃÜ¡£
¡¡¡¡Îå¡¢ÒÔ±à³Ì·½Ê½¼ÓÃÜÅäÖò¿·Ö
¡¡¡¡System.Configuration.SectionInformationÀà¶ÔÒ»¸öÅäÖýڵÄÃèÊö½øÐÐÁ˳éÏó¡£ÎªÁ˼ÓÃÜÒ»¸öÅäÖýڣ¬Ö»ÐèÒª¼òµ¥µØÊ¹ÓÃSectionInformationÀàµÄProtectSection(Ìṩ³ÌÐò)·½·¨£¬´«µÝÄãÏëʹÓõÄÌṩ³ÌÐòµÄÃû×ÖÀ´Ö´ÐмÓÃÜ¡£ÎªÁË´æÈ¡ÄãµÄÓ¦ÓóÌÐòµÄWeb.configÎļþÖеÄÒ»¸öÌØ¶¨µÄÅäÖýڣ¬Äã¿ÉÒÔʹÓÃWebConfigurationManagerÀà(ÔÚ System.Web.ConfigurationÃüÃû¿Õ¼äÖÐ)À´ÒýÓÃÄãµÄWeb.configÎļþ£¬È»ºóʹÓÃËüµÄGetSection (sectionName)·½·¨·µ»ØÒ»¸öConfigurationSectionʵÀý¡£×îºó£¬Äã¿ÉÒÔ¾ÓÉConfigurationSectionʵÀýµÄSectionInformationÊôÐԵõ½Ò»¸öSectionInformation¶ÔÏó¡£
¡¡¡¡ÏÂÃæ£¬ÎÒÃÇͨ¹ýÒ»¸ö¼òµ¥µÄ´úÂëʾÀýÀ´ËµÃ÷ÎÊÌ⣺
privatevoid ProtectSection(string sectionName£¬ string provider)
{
¡¡Configuration config = WebConfigurationManager.
¡¡OpenWebConfiguration(Request.ApplicationPath);
¡¡ConfigurationSection section = config.GetSection(sectionName);
¡¡if (section != null &&!section.SectionInformation.IsProtected)
¡¡{
¡¡¡¡section.SectionInformation.ProtectSection(provider);
¡¡¡¡config.Save();
¡¡}
}
private void UnProtectSection(string sectionName) {
¡¡Configuration config =WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
¡¡ConfigurationSection section = config.GetSectio n(sectionName);
¡¡if (section != null && section.SectionInformation.IsProtected)
¡¡{
¡¡¡¡section.SectionInformation.UnprotectSection();
¡¡¡¡config.Save();
¡¡}
¡¡¡¡Äã¿ÉÒÔ´ÓÒ»¸öASP.NETÒ³ÃæÖе÷ÓÃÕâ¸öProtectSection(sectionName£¬provider)·½·¨£¬ÆäÏàÓ¦µÄ²ÎÊýÊÇÒ»¸ö½ÚÃû (ÈçconnectionStrings)ºÍÒ»¸öÌṩ³ÌÐò(ÈçDataProtectionConfigurationProvider)£¬²¢ÇÒËü´ò¿ª Web.configÎļþ£¬ÒýÓøýڣ¬µ÷ÓÃSectionInformation¶ÔÏóµÄProtectSection(provider)·½·¨£¬×îºó±£´æÅäÖñ仯¡£
¡¡¡¡ÁíÒ»·½Ã棬UnProtectSection(provider)·½·¨ÊµÏÖ½âÃÜÒ»¸öÌØ¶¨µÄÅäÖýڡ£ÔÚ´Ë£¬½öÐèÒª´«ÈëÒª½âÃܵĽÚ-ÎÒÃDz»ÐèÒªÂé·³Ìṩ³ÌÐò£¬ÒòΪ¸ÃÐÅÏ¢ÒѾ´æ´¢ÔÚ°éËæencrypted½ÚµÄ±ê¼ÇÖÐ(Ò²¼´ÊÇ£¬ÔÚÉÏÃæµÄʾÀýÖеģ¼connectionStrings£¾½Ú£¬ÔÚ±»¼ÓÃÜÒÔºó£¬Ëü°üº¬ÁËÌṩ³ÌÐò£º£¼connectionStringsconfigProtectionProvider="DataProtectionConfigurationProvider"£¾)¡£
¡¡¡¡¼Çס£¬Ò»µ©¸ÃÊý¾Ý±»¼ÓÃÜ£¬µ±´ÓÒ»¸öASP.NETÒ³Ãæ¶ÁÈ¡Ëüʱ(Ò²¼´ÊÇ£¬´ÓÒ»¸öSqlDataSource¿Ø¼þ»òÒÔ±à³Ì·½Ê½¾ÓÉ ConfigurationManager.ConnectionStrings[connStringName].ConnectionString¶ÁÈ¡¸ÃÁ¬½Ó×Ö·û´®ÐÅÏ¢)£¬ASP.NET»á×Ô¶¯µØ½âÃܸÃÁ¬½Ó×Ö·û´®²¢ÇÒ·µ»ØÆÕͨÎı¾Öµ¡£»»¾ä»°Ëµ£¬ÔÚʵÏÖ¼ÓÃܺó£¬ÄãÒ»µã²»ÐèÒª¸Ä±äÄãµÄ´úÂë¡£Ï൱¿á£¬¶Ô²»¶Ô£¿
¡¡¡¡´Ó±¾ÎÄÏÂÔØµÄʾÀýASP.NET 2.0ÍøÕ¾ÖУ¬Äã»á·¢ÏÖÓÐÒ»¸öʾÀýÒ³Ãæ£¬ËüչʾÁ˸ÃÕ¾µãµÄWeb.configÎļþ£¬ÆäÖÐÓÐÒ»¸ö¶àÐÐTextBox£¬»¹ÌṩÁËÏàÓ¦µÄWeb¿Ø¼þ°´Å¥ÓÃÓÚ¼ÓÃÜÅäÖÃÎļþµÄ¸÷¸ö²¿·Ö¡£Õâ¸öʾÀýÖÐҲʹÓÃÁËÉÏÃæÒѾÌÖÂÛ¹ýµÄProtectSection()ºÍUnProtectSection()·½·¨¡£
×öÈËÒªºñµÀ£¬Çë×¢Ã÷ת×Ô¿áÍø¶¯Á¦(www.ASPCOOL.COM)¡£

