关于.net2.0中Webconfig中连接串的加密

 ASP.NET 2.0 现在允许您对配置文件的单个节进行加密,这样,几乎不可能使用文本编辑器来读取这些配置节。

ASP.NET 包括两个内置的受保护配置提供程序:RSA 和 DPAPI DPAPI 提供程序使用特定于计算机的密钥,因此您必须在每台计算机上实际加密配置设置。默认使用的 RSA 提供程序允许您选择创建 RSA 密钥并将其安装在其他计算机上,这样您就可以在这些计算机之间复制相同的配置文件。此外,您还可以安装其他受保护配置提供程序供系统使用。

调 用配置管理 API 可透明地使用加密的节,因为该 API 自动处理加密和解密。若要通过编程方式将配置节设置为加密的,可获取 ConfigurationSection.SectionInformation 属性,然后传入您选择的保护提供程序调用 ProtectSection 方法。若要使用默认提供程序,可以传入 null 或空字符串。UnprotectSection 方法禁用配置节的加密。

下面的示例演示如何以编程方式对配置节进行加密,配置 API 如何自动处理加密的节。


<% @ Import Namespace = " System.Configuration "   %>
<% @ Import Namespace = " System.Web.Configuration "   %>
<% @ Import Namespace = " System.Xml "   %>

  
< script runat = " server "  language = " C# " >
    
    
public   void  Page_Load( object  source, EventArgs e)
    
... {
        
if (!IsPostBack) ...{
            UpdateUI();
        }

    }


    
void  ProtectButton_OnClick(Object source, EventArgs e)
    
... {
        String path 
= Request.CurrentExecutionFilePath;
        path 
= path.Substring(0, path.LastIndexOf('/'));

        
// Get configuration.
        Configuration config = WebConfigurationManager.OpenWebConfiguration(path);
        ConfigurationSection appSettings 
= config.GetSection("appSettings");
        
if (appSettings.SectionInformation.IsProtected) 
        
...{
            appSettings.SectionInformation.UnprotectSection();
        }

        
else
        
...{
            appSettings.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
        }


        
try
        
...{
          config.Save();
          UpdateUI();
        }

        
catch (Exception ex)
        
...{
          Response.Write(
"In order to modify configuration settings, the ASP.NET process account (either the local ASPNET or Network Service account, by default) ");
          Response.Write(
"must have write permission granted for the Web.config file in the sample directory");
        }

    }


    
void  UpdateUI()
    
... {
        String path 
= Request.CurrentExecutionFilePath;
        path 
= path.Substring(0, path.LastIndexOf('/'));

        
// Get configuration.
        Configuration config = WebConfigurationManager.OpenWebConfiguration(path);

        
// Show XML for app settings.
        ConfigurationSection appSettings = config.GetSection("appSettings");

        
// Set protect button appropriately.
        if (appSettings.SectionInformation.IsProtected) 
        
...{
            Encrypted.Text 
= "Yes";
            ProtectButton.Text 
= "Unprotect";
        }

        
else
        
...{
            Encrypted.Text 
= "No";
            ProtectButton.Text 
= "Protect";
        }


        
// Show XML for app settings.
        AppSettingsXml.Text = " " + Server.HtmlEncode(appSettings.SectionInformation.GetRawXml());

        
// Load XML directly from config file, to show encrypted XML.

        String configPath 
= Server.MapPath("web.config");
        XmlDocument doc 
= new XmlDocument();
        doc.PreserveWhitespace 
= true;
        doc.Load(configPath);
        XmlNode appSettingsXml 
= doc.SelectSingleNode("configuration/appSettings");
        AppSettingsEncrypted.Text 
= " " + Server.HtmlEncode(appSettingsXml.OuterXml);
    }


</ script >

< html >
 
< head >
   
< title > Encrypted Configuration Sections </ title >
 
</ head >
  
< body >
    
< form id = " form1 "  runat = " server " >
      
< div >
        
< h2 > Encrypted: < asp:Label runat = " server "  id = " Encrypted "   /></ h2 >< asp:Button runat = " server "  id = " ProtectButton "  OnClick = " ProtectButton_OnClick "   />
        
< h2 > Current XML (decrypted): </ h2 >
        
< pre >
        
< asp:Label runat = " server "  ID = " AppSettingsXml "   />
        
</ pre >
        
< h2 > Encrypted contents: </ h2 >
        
< pre >
        
< asp:Label runat = " server "  ID = " AppSettingsEncrypted "   />
        
</ pre >
      
</ div >
    
</ form >
  
</ body >
</ html >


对应配置文件如下:

<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< configuration >
    
< configProtectedData  />
    
< appSettings >
        
< add key = " currencyService "  value = " http://www.microsoft.com/services/currencyService.asmx "   />
        
< add key = " creditCardValidationService "  value = " http://www.microsoft.com/services/cc.asmx "   />
    
</ appSettings >

</ configuration >

效果如图:

邀月工作室

 

 邀月工作室

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值