原文:对web.config的ConnectionString加密

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

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

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

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

 <appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>FSEEyg/SUlE0SqTip30MSc9a/tUYJSDiJ3nDLkE1iGSYU3vo02KRhsTnbLWRSRLffGGWP65fUJJuj5+qiPNQNX0THjCajF43PrP28u9V1fkXuX/T5BxI4Rg2rjw6mSPLuZ1SaQOjJjXi8ArCYs+83qpCxvjml1UN74RlOpLs6qs=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>0Qp07JkMSsyTmHADATQ+rkGCok21XBFH2zvtj4diSSsTNJhi3CzBYw6QfasdpyuG/zf+4RWh4aNJ/IrGavzeSyRa929zAv/RsYpR3GQROWt20zr6d7UJUfDgbm85KyZrQNXLwhcfEiUX5VMJg+g3OUczhiDS8YvQ+JjOCDQQPpv99sj8AT2eNCyJJpKWJpGSf0iBpJmkpNP6MOTYHEEmVQ==</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>

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

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

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

2:运行

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

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

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

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

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

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

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

 aspnet_regiis -pc "MyKey" -exp

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

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

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

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

4:赋权限(ASPNET权限)

 aspnet_regiis -pa "MyKey" "ASPNET"

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

  <configuration>
<configProtectData defaultProvider="MyProtectedConfigurationProvider">
<providers>
<add name="MyProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider" cspProviderName="" useMachineContainer="true" useOAEP="false" keyContainerName="SharedKeys"/>
</providers>
</configProtectedData>
</configuration>

完成!

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

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

  1. ASP.NET MVC系列:web.config中ConnectionString aspnet_iis加密与AppSettings独立文件

    1. web.config中ConnectionString aspnet_iis加密 web.config路径:E:\Projects\Libing.Web\web.config <conne ...

  2. 采用ASP.NET IIS 注册工具 (Aspnet_regiis.exe)对web.config实行本地加密

    加密原因:我们通常将一些重要的配置信息写在Web.config里面,其中数据库链接就是这样的信息.将这些数据直接明文显示,显然不太安全. 工具: 采用ASP.NET IIS 注册工具 (Aspnet_ ...

  3. web config数据库连接字符串加密

    ASP.NET web.config中,数据库连接字符串的加密与解密 ASP.NET web.config中,数据库连接字符串的加密与解密. 开始--->运行,输入cmd,接着输入以下内容 加密 ...

  4. asp.net web.config数据库连接字符串加密与解密

    在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译.最好的解决方法 ...

  5. 对web.config加密,和解密码详细说明

    可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ...

  6. .net加密web.config文件

    这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串,之前只写了第二种方式,现在将两种方式都写出来,供大家参考.不管使用哪种方式我们在程序中都不需要写任何代码来解密连接字 ...

  7. 【转】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config数据库链接字串】

    原文链接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config web.config中一般会存放 ...

  8. 如何对web.config进行加密和解密

    http://blog.csdn.net/jf_jifei/article/details/6527390 在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的 ...

  9. (译)利用ASP.NET加密和解密Web.config中连接字符串

    介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, A ...

随机推荐

  1. ubuntu安装jdk eclipse mysql等

    linux ubuntu下安装java web开发环境,需要安装包: jdk7 eclipse(选择java EE developer) apche-tomcat mysql(workbench可视化 ...

  2. Oracle压缩总结2— 估计表压缩效应

    使用压缩前,我们可以估算压缩能有多大效果. 11gr2我已经能够使用dbms_comp_advisor,具体代码见附件.只需要运行两个文件dbmscomp.sql和prvtcomp.plb.然后使用D ...

  3. Java对存储过程的调用方法

    本文将介绍Java怎样实现对存数过程的调用方法,作者用了几个样例进行了具体的说明,简单明了,很适合刚開始学习的人. 一.Java怎样实现对存储过程的调用: A:不带输出參数的 create proce ...

  4. JavaEE(13) - JPA属性映射

    1. 映射实体的属性 #1. 使用@Transient修饰不想持久保存的Field #2. 使用@Enumerated修饰枚举类型的Field #3. 使用@Lob, @Basic修饰枚举类型的Fie ...

  5. Javascript标准类型的方法集

    1 array.concat(item...) concat方法会产生一个新数组,将一个或多个item附加在数组之后 var a = ['a', 'b', 'c'] var b = ['x', 'y' ...

  6. js地址下拉列表中全职工作

    /******************************************************************* *输出全国各省辖市下拉列表项writeCitys() *输出企 ...

  7. 标签(Tag)的各种设计方案

    标签(Tag)的各种设计方案 首先,标签(Tag)是什么? 我的理解:用来具体区分某一类内容的标识,和标签类似的一个概念是分类(Category),有一个示例可以很好的区分它们两个,比如人类分为:白种 ...

  8. 面向对象三大特征之封装与static——(Java学习笔记四)

    面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...

  9. crawler_爬虫开发的曲线图

    个人总结爬虫的学习曲线,可分为三个阶段, 一. 主要在填充基础知识,要熟悉http协议,学习正则表达式,首先基于jdk的基础包的网络功能,.net包下的  httpurlconnction 从细节上简 ...

  10. JBoss7官方最新版下载地址

    JBoss是全世界开发人员共同努力的成果,一个基于J2EE的开放源码的应用server. 由于JBoss代码遵循LGPL许可,能够在不论什么商业应用中免费使用它,而不用支付费用.2006年,Jboss ...