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&§ion.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依然放在资源里面供大家下载,如果有什么不足的地方,希望大家能指点一下,我们一起进步一起学习..........