如何对Web.config中数据库连接字符串进行加解密

上传人:宝路 文档编号:2735582 上传时间:2017-07-27 格式:DOCX 页数:5 大小:47.63KB
返回 下载 相关 举报
如何对Web.config中数据库连接字符串进行加解密_第1页
第1页 / 共5页
如何对Web.config中数据库连接字符串进行加解密_第2页
第2页 / 共5页
如何对Web.config中数据库连接字符串进行加解密_第3页
第3页 / 共5页
如何对Web.config中数据库连接字符串进行加解密_第4页
第4页 / 共5页
如何对Web.config中数据库连接字符串进行加解密_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《如何对Web.config中数据库连接字符串进行加解密》由会员分享,可在线阅读,更多相关《如何对Web.config中数据库连接字符串进行加解密(5页珍藏版)》请在金锄头文库上搜索。

1、一、 如何对 Web.config 中数据库连接字符串进行加解密,避免明文方式。1) 概述:Web.Config 中可以存储数据库连接语句,通常存于 配置节中,程序调用非常方便,但是在系统的应用过程中,利用明文存储这些敏感信息是不安全的,这就需要对配置信息进行加密,加密后即使攻击者获取了对配置文件的访问,也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性。使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 加密或解密 Web 配置文件的各节。而在在处理 Web.config 文件时,ASP.NET 将自动解密已加密的配置元素。要加密配置文件的内容, 通

2、过 Aspnet_regiis.exe 工具与 pe 选项以及要加密的配置元素的名称一起使用,利用.NET Framework 提供的 2种受保护配置程序来实现节点加解密:名为 DataProtectionConfigurationProvider 的 DPAPIProtectedConfigurationProvider 实例 使用 Windows 数据保护 API (DPAPI) 对数据进行加密和解密。名为 RsaProtectedConfigurationProvider 的 RsaProtectedConfigurationProvider 实例 使用 RSA 加密算法对数据进行加密和

3、解密。该提供程序配置为默认提供程序下面就这 2中加密方式,分别进行举例如下:2) 使用 DPAPIProtectedConfigurationProvider 来加解密配置节利用 aspnet_regiis -pef connectionStrings 对 web.config 加密在服务器命令提示符下,输入如下命令:C:WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pef connectionStrings D:程序某系统EpointBid_HuiYuan prov DataProtectionConfigurationProvi

4、der正在加密配置节成功!-pef 指定两个参数: 这里 connectionStrings 是要进行加密的配置节,后面是具体的程序路径 这里 D:程序某系统EpointBid_HuiYuan 是要加密的配置文件所在的物理目录。-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于 C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG 的位置,我们可以找到 machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。这两个驱动是 RsaProtectedCon

5、figurationProvider(类名 RsaProtectedConfigurationProvider,详细操作见下说明示例)和 DataProtectionConfigurationProvider(类名 DpapiProtectedConfigurationProvider)。如果不加驱动选项,则采用默认驱动进行加密。加密后的效果如下:AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAUSTiHw/WeEKGWM0DRzjy0rGAHSCBi7Am8y3bfgJlMIAnZhsf6fRpGZV+twCUIRQ4dI7kEsKllMzLpMfxKEgwQOl0cZrTa

6、9X4BMwnmvi1wVbOTbU7pD6EMN3F41kwkHS6tmBbqClFO9NMLX.加密后,如何使用应用上没有变化,在获取这些加密的配置节数据时会自动对其解密。要修改加密后的配置节内容怎么办,提供三种方法:一是对未加密的 web.config 备份进行修改,然后再加密覆盖之;二是使用 -pdf(注意不是 -pef)进行解密,再修改,再加密。注意,要对 DataProtectionConfigurationProvider 加密的配置文件进行解密,只能在加密的机器上进行;提示:在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中 )必

7、须发生在与加密相同的机器上。例如,作为拷贝部署的一部分,移动 Web.config至另外一台机器将会导致 Web.config无法解密,所以推荐在部署 Web站点至最终机器之后,再将连接字符串进行加密。在服务器命令提示符下,输入如下命令:C:WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pdf connectionStrings D:程序某系统EpointBid_HuiYuan正在解密配置节.成功!三是利用 IIS 中集成的 ASP.NET 编辑,该编辑时采用的明文,但保存时自动确定是采用密文还是明文,非常方便。3) 使用 RSA

8、密钥容器 进行 webconfig 加解密在服务器命令提示符下,输入如下命令进行加密:C:WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pef connectionStrings D:程序某系统EpointBid_HuiYuan 正在加密配置节成功!如要解密,操作方法同上。-如果将同一个经过加密的 Web.config 文件部署到数台服务器上的网络场,必须将相同的 RSA 密钥容器部署到这些服务器上。为了实现此目的,就需要导出和导入 RSA 密钥容器。首先需要为应用程序创建一个 RSA 密钥容器,将它导出到 XML 文件,然后在每台

9、需要对加密的 Web.config 文件进行解密的服务器上导入该文件。异机 RSA 密钥容器操作过程举例:下面的命令创建一个名为 myRSA 的 RSA 密钥容器,该容器是可导出的计算机级密钥容器。1、创建 RSA 密钥容器(举例:myRSA )使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 及 pc 开关。必须为密钥容器指定一个名称,该名称标识应用程序的 Web.config 文件的 configProtectedData 节中指定的 RsaProtectedConfigurationProvider 所使用的密钥容器。为确保可以导出新创建的 RSA 密钥容器

10、,必须包括 -exp 选项。C:WindowsMicrosoft.NETFrameworkv2.0.50727 aspnet_regiis -pc myRSA exp myRSA 为密钥容器的名称,-exp 是指创建可导出的 密钥容器2、在程序的 web.config 中加入如下内容3、用指定的密钥加密指定目录下的 web.config文件的指定的配置节aspnet_regiis -pef connectionStrings D:程序某系统EpointBid_HuiYuan -prov myRSAProvider 对上述配置节 进行指定密钥加密。4、解密 web.configaspnet_re

11、giis -pdf connectionStrings D:程序某系统EpointBid_HuiYuan 5、将 web.config文件拷贝到服务器后,导入 RSA 密钥容器,过程如下:6将把本机密钥容器导出为 xml文件 若要将 RSA 密钥容器导出到 XML 文件,可以使用 Aspnet_regiis.exe 工具及 px 开关。XML 文件可以用作 RSA 密钥容器的备份,也可用于在其他服务器上导入 RSA 密钥容器。若要对加密信息进行解密,RSA 密钥容器的私钥部分是必需的。若要在另一台服务器上使用导出的密钥容器,还需导入私钥。通过在导出密钥时指定 pri 选项,可以在 XML 文件

12、中包括私钥。还必须指定导出的密钥容器是计算机级还是用户级的。若要导出用户级密钥容器,必须以其 Windows 配置文件存储了密钥的用户的身份登录。若要指定用户级密钥,请在导出加密密钥信息时包括 -pku 选项;否则,导出的密钥将来自计算机密钥存储区。例如,下面的命令将名为 myRSA 的计算机级 RSA 密钥容器导出到名为 key.xml 的文件中并包括了私钥信息。aspnet_regiis -px myRSA d:Key.xml 这个命令只导出公钥,因此以后只能用于加密,而无法解密。aspnet_regiis -px myRSA d:Key.xml -pri 这个则连私钥一并导出,所以我们要

13、用这个。7、将 key.xml文件拷贝到服务器上,在服务器上导入 key.xml文件 aspnet_regiis -pi myRSA c:Key.xml 在服务器上执行该命令此时,再运行程序会发现又可以解密了。证明加密与解密机制运行正常。 如果,拷贝 web.config文件后,不导入 rsa密钥,则程序将无法访问。4) 其余操作1、如果把密钥容器删除 aspnet_regiis -pz myRSA 删除后再运行程序,会提示出错: 分析器错误信息: 未能使用提供程序“myRSA”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。 也就是说,在任何一台未安装正确的密钥容器的机器上,程

14、序都无法对connectionStrings节进行解密,因此也就无法正常运行。 2、如果访问 web程序,页面提示 Error message from the provider: The RSA key container could not be opened. 是由于 network service帐户无法访问密钥文件造成的。找到密钥文件, 赋予 network service读权限。aspnet_regiis -pa myRSA NT AUTHORITYNETWORK SERVICE5) 区别 RsaProtectedConfigurationProvider RSA 加密,公钥/私钥

15、均存储在配置文件中,移植方便。 DataProtectionConfigurationProvider 使用 Windows 内置的加密服务,密钥由 LSASS.EXE 管理,无法移植。通过设置可以限定是只能某个帐户可以使用加密的数据,还是 Windows 中所有帐户均可使用。 你也可以用你自己的加密算法,具体请参见 MSDN 的实现受保护配置提供程序。这两个提供程序都提供对数据的强加密;但是,如果您打算在多台服务器(如网络场)上使用同一个加密配置文件,则只有使用 RsaProtectedConfigurationProvider 才能导出用于对数据进行加密的加密密钥,并在另一台服务器上导入它们。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号