第二篇博客:web.config加密与解密

 

          web.config文件是一个XML文本文件,用来存储asp.net中web应用程序的配置信息(比如最常用的设置asp.net web应用程序的身份验证方式),还可以出现在应用程序的每一个目录中.但是由于XML语法结构简单易懂,出于对应用程序维护和修改考虑,web应用程序开发者往往会将应用程序的一些关键信息配置在web.config文件中,例如数据库连接字符串.然而,web.config文件也存在安全性隐患,这种以明码方式存储的关键信息,可能会成为别有用心的人的突破口,造成不必要的损失.所以web.config的加密很重要........
          第一种:使用SectionInformation类实现加密与解密
           1.ProtectSection方法-对配置文件加密
           语法:public void ProtectSection(string protectionProvider)
                 参数说明:
                protectionProvider:要使用的保护提供程序的名称.默认情况下将包含以下保护提供程序加密.
                              ★★DPAPIProtectedConfigurationProvider,使用Windows数据保护API(DPAPI)数据进行加密和解密.
                              ★★RSAProtectedConfigurationProvider,使用RSA加密算法对数据进行加密和解密.
                 总结:这两个提供程序都提供对数据的强加密,但是,如果打算在多台服务器(比如网络场)上使用同一个加密配置文件,则只有使用RSAProtectedConfigurationProvider才能导出用于对数据进行加密的加密密钥,并在另一台服务器上导入它们.
                 2.UnProtectSection方法-对配置文件解密
         ★★★★实现过程:
   /// <summary>
    /// web.config加密
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        //打开该应用程序中的配置文件
        Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);//-->获取服务器上ASP.NET应用程序的虚拟应用程序根路径
        //在打开的配置文件中找到指定的节
        ConfigurationSection section = config.GetSection("appSettings");
        if(section!=null&&!section.SectionInformation.IsProtected)//不受保护的
        {
            section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
            //保存加密后的文件
            config.Save();
            //加密成功提示
            Response.Write("<script>alert('加密成功!');</script>");
        }
    }

   /// <summary>
    /// web.config解密
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        //打开该应用程序中的配置文件
        Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
        ConfigurationSection section = config.GetSection("appSettings");
        if(section!=null&&section.SectionInformation.IsProtected)//受保护的
        {
            section.SectionInformation.UnprotectSection();
            config.Save();
            Response.Write("<script>alert('解密成功');</script>");
        }
    }
         以上是代码实现加密解密的操作,asp.net在处理web.config文件时会自动对该文件的内容进行解密.因此,不需要任何附加步骤即可对已加密的设置进行解密,供其他asp.net功能使用或用于访问代码中的值.
         
          第二种:使用命令行工具aspnet_regiis.exe实现加密与解密(类似于DOS的命令工具)
               1.加密:apsnet_regiis-pef "connectionStrings" "Path"
               2.解密:aspnet_regiis-pdf "connectionStrings" "Path"
               3.参数说明:
               -pef:表示根据文件绝对路径执行加密配置节
               -pdf:表示根据文件绝对路径执行解密配置节
               ConnctionStrings:表示要加密或解密的配置点名称(注意:不是连接字符串的名称)
               Path:表示Web.config文件所在的绝对路径。
          例:加密:打开命令提示符,输入命令提示符aspnet_regiis-pef "connectionStrings/appSettings" "E:\ASP.NET典型模块\Web.config" 命令,按回车键
               解密:打开命令提示符,输入命令提示符aspnet_regiis-pdf "connectionStrings/appSettings" "E:\ASP.NET典型模块\Web.config" 命令,按回车键
         由于aspnet_regiis.exe工具与特定版本的.NET Framework相关联,因此必须使用适当版本的aspnet_regiis.exe工具为asp.net应用程序更新配置脚本映射.aspnet_regiis.exe工具讲asp.net应用程序的脚本重新配置为匹配该工具的asp.net ISQPI扩展版本.
 
             博客的Demo依然放在资源里面供大家下载,如果有什么不足的地方,希望大家能指点一下,我们一起进步一起学习..........  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值