对web.config的ConnectionString加密

原文:对web.config的ConnectionString加密

      本文参考了wayshan的博客,原文地址:http://www.cnblogs.com/wayshan/archive/2012/04/09/web_config.html

     

      web.config配置文件中,有一些敏感数据希望被保护起来,例如数据库的连接串ConnectionString,默认情况下是明文显示的,例如:

1 <appSettings>
2     <!--数据库链接-->
3     <add key="ConnectionString" value="Data Source=127.0.0.1;Initial Catalog=Demo2012;User ID=sa;password=123456"/>
4   </appSettings>

  经过加密之后,配置信息变为:

 1 <appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
 2     <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
 3       xmlns="http://www.w3.org/2001/04/xmlenc#">
 4       <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
 5       <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
 6         <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
 7           <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
 8           <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
 9             <KeyName>Rsa Key</KeyName>
10           </KeyInfo>
11           <CipherData>
12             <CipherValue>FSEEyg/SUlE0SqTip30MSc9a/tUYJSDiJ3nDLkE1iGSYU3vo02KRhsTnbLWRSRLffGGWP65fUJJuj5+qiPNQNX0THjCajF43PrP28u9V1fkXuX/T5BxI4Rg2rjw6mSPLuZ1SaQOjJjXi8ArCYs+83qpCxvjml1UN74RlOpLs6qs=</CipherValue>
13           </CipherData>
14         </EncryptedKey>
15       </KeyInfo>
16       <CipherData>
17         <CipherValue>0Qp07JkMSsyTmHADATQ+rkGCok21XBFH2zvtj4diSSsTNJhi3CzBYw6QfasdpyuG/zf+4RWh4aNJ/IrGavzeSyRa929zAv/RsYpR3GQROWt20zr6d7UJUfDgbm85KyZrQNXLwhcfEiUX5VMJg+g3OUczhiDS8YvQ+JjOCDQQPpv99sj8AT2eNCyJJpKWJpGSf0iBpJmkpNP6MOTYHEEmVQ==</CipherValue>
18       </CipherData>
19     </EncryptedData>
20   </appSettings>

  

  这么长一串,一定不会有人认出来你的数据库地址和登陆信息了   :)

 

      操作过程如下(RsaProtectedConfigurationProvider加密):

      1:运行cmd,并定位到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(可以直接运行vs2005的命令提示工具,但是貌似vs2010默认指向的framework3.5里没有aspnet_regiis命令,为了避免有些人找不到,所以还是直接cmd比较好。)

      2:运行

1 aspnet_regiis -pef "appSettings" "D:\demo"   //显示"正在加密配置节,成功!"

          这里要注意一下,D:\demo是工程的路径,可以是绝对路径,也可以是网站的相对路径,具体方法可以参考aspnet_regiis的帮助。如果你把web.config放在d盘根目录下,那么路径就是"D:\\"。appSettings是要加密的节点名称,也可以针对某个节点的子节点进行加密,例如

1 aspnet_regiis -pef "system.web/authentication" "D:\demo"

      加密完成后,除了视觉上变为复杂的字符串之外,使用上与加密前是完全相同的。解密时运行参数-pdf,例如:

1 aspnet_regiis -pdf "appSettings" "D:\demo"  //显示"正在解密配置节,成功!"

     

      经过加密的字符串,虽然可以在本机使用,但是在另外一台电脑上(客户现场或服务器)是无法直接使用的。需要进行一些配置。

      1:创建秘钥容器(pc-操作容器 -exp,可导出)

1 aspnet_regiis -pc "MyKey" -exp

      2:导出容器中的秘钥到xml中(px操作容器文件,注意D:\\后面有一个空格,否则你找不到文件的  ^ ^)

1 aspnet_regiis -px "MyKey" "D:\\ keys.xml" -pri

      3:拷贝你的keys.xml文件到服务器上,并且导入秘钥。(-pi导入容器里的秘钥)

1 aspnet_regiis -pi "MyKey" “D:\keys.xml”

      4:赋权限(ASPNET权限)

1 aspnet_regiis -pa "MyKey" "ASPNET"

      5:修改web.config文件,增加:

1  <configuration>
2  <configProtectData defaultProvider="MyProtectedConfigurationProvider">
3  <providers>
4  <add name="MyProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider" cspProviderName="" useMachineContainer="true" useOAEP="false" keyContainerName="SharedKeys"/>
5  </providers>
6  </configProtectedData>
7  </configuration>

      完成!

 

      说了这么多,我累了你也累了。有没有简便一些的办法?有。开发时用明文,部署的时候在客户现场运行aspnet_regiis加密就可以了。(省略号)

时间: 2024-07-28 22:57:57

对web.config的ConnectionString加密的相关文章

web.config 文件的connectionString加密之后的问题!!

问题描述 web.config文件的connectionString加密之后,sqlCacheDependency要使用connectionString怎么办,高手帮帮忙,先谢谢了/ 解决方案 解决方案二:帮帮忙啊,,高手些!!!解决方案三:你要用这个链接字符串?connectionString中Add属性的name设置下就好了吧,不过我不知道这个受不受加密的影响,也求教高手解决方案四:就是有影响啊,请教高手出马

解决打不开 RSA 密钥容器 即:加密web.config中的内容

简单的解决方法: WebConfig 加解密,未能使用提供程序"RsaProtectedConfigurationProvider"进行解密.提供程序返回错误消息为: 打不开 RSA 密钥容器.问题:未添加用于访问 RSA 密钥容器命令:aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE"注意事项:XP下:aspnet_regiis -pa

ASP.NET web.config中 数据库连接字符串加密解密_实用技巧

虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "你的Web项目路径" 解密: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -

web.config文件中的数据库连接字符串加密解密怎么完成,超级急切!!!!!!!!connectstring

问题描述 web.config文件中的数据库连接字符串加密解密怎么完成,超级急切!!!!!!!! 解决方案 解决方案二: 解决方案三:曾经搜索过这样个方法:(声明:我没有实际操作过)1.打开记事本,然后将下面的代码复制到一个新文件中.<%@PageLanguage="C#"%><%Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);%>保存my.aspx到你的we

asp.net 2.0 中加密web.config 文件中的配置节

asp.net|web|加密 在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider来加密,本文说明使用RSAProtectedConfigurationProvidert和计算机级别的密钥容器进行加密的步骤. 1.         首先确定要进行加密的web.config中的配置节是否可以加密 2.         创建RS

asp.net 2.0中加密web.config

在asp.net 2.0中,可以很方便地加密web.config文件里的敏感信息了.比如如果有权限操作服务器的话, 可以用下面的方法加密web.config里的敏感信息,比如要加密数据库连接串 aspnet_regiis -pe "connectionStrings" -app "/应用程序的名字" 如果没权限的话,可以在程序里动态实现 Configuration config = Configuration.GetWebConfiguration(Request.

加密和解密ASP.NET配置文件(Web.config)

首先添加引用: using System.Web.Configuration; 加密操作如下: PRivate void ProtectSection(string sectionName, string provider)     {         Configuration config =             WebConfigurationManager.                 OpenWebConfiguration(Request.applicationPath);

asp.net中 web.config中连接用户名和密码是用什么加密的求解

问题描述 asp.net中 web.config中连接用户名和密码是用什么加密的求解 <add key="databaseconn_Server" value="173.231.20.198" /> <add key="databaseconn_DB" value="wws" /> <add key="databaseconn_User" value="5AC7376

asp.net web.config加密解密方法_实用技巧

使用命令行工具aspnet_regiis.exe 你还能够使用aspnet_regiis.exe命令行工具来加密和解密Web.config文件配置部分,你可以在"%WINDOWSDIR%\Microsoft.Net\Framework\version"目录下找到这个工具.为了加密Web.config文件中的一个节,你可以在这个命令行工具中使用DPAPI机器密钥,如下所示: 加密一个特定网站的Web.config文件的通用形式: 复制代码 代码如下: aspnet_regiis.exe