关于asp.net 连接字符串加密

.NetFramework自带两种预定义的提供程序

  • DPAPIProtectedConfigurationProvider 使用Windows数据保护API(DPAPI)进行数据的加密和解密
  • RSAPIProtectedConfigurationProvider 使用RSA加密算法进行数据的加密和解密(默认的提供程序)。

我们可以使用一个常用的系统工具aspnet_regiis.exe(通常位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319)

用法:启动命令提示符工具,找到aspnet_regiis.exe并拖入命令提示符工具中,aspnet_regiis -pef connectionstrings "网站目录的路径"

加密前后配置文件区别可以自行实验查看

解密的话,可以使用-pdf替代上述命令行的-pef参数

提示:使用受保护区段的内容页面在运行于visual studio自带的服务器上不会出现任何问题。但如果位于实际的IIS虚拟目录中,可能会出现RSA提供程序配置错误,为什么胡这样呢?


 基于RSA提供程序需要“密钥容器”才能工作。默认密钥容器NetFrameWorkConfigurationKey在安装的时候就已经创建。aspnet_regiis工具提供了许多命令行参数,来添加、语移除和编辑密钥容器。应在转储受RSA保护的配置提供程序前创建密钥容器,这非常重要。该容器不仅要存在,而且要与要调用他的账户相关联。系统账户(运行本地web服务器所使用的账户)要与容器一并列出,但web服务器上的asp.net账户则不必如此。假设在NETWORK SERVICE账户下运行asp.net,我们需要运行一下命令来为该用户添加访问权限:

aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"

指定完整的账户名称很重要。注意,仅当使用RSA提供程序时,才有必要授权密钥容器的访问权限。


RSA和DPAPI提供程序对敏感数据的加密都很有效。DPAPI提供程序在密钥管理方面非常简单--密钥是基于计算机登录凭据生成的,同一台计算机上运行的所有进程都可以访问。也正是由于这个原因,在web Form中使用DPAPI提供程序就不理想了,因为相同的已加密web.config文件会被部署到多台服务器中,这时,要么对多台服务器上的web.config以手动方式逐一进行加密,要么将同一容器的密钥复制到所有服务器中。为此,我们需要为应用程序创建密钥容器,将其导入XML文件,并将其逐一导入每台需要加密web.config问价的服务器中。

要想创建密钥容器,可以使用下述命令:

aspnet_regiis -pc 密钥容器名称 -exp

随后,将密钥容器导入xml文件:

aspnet_regiis -px 密钥容器名称 文件名.XML

接着,将xml文件复制到每台服务器中,通过下面的命令将其导入

aspnet_regiis -pi 密钥容器名称 xml文件

最后,将访问该容器的权限授予asp.net账户


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值