web.config 加密解密--简洁版

前面已经讲过在 web.config 中可以存储数据库连接语句(通常存于 <connectionString>),也可以存储 SQL 语句(通常存于<appSettings>),这样在我们的程序中就可以非常方便地调用,特别是 .NET Framework 2.0 中使用声明式数据绑定,更是需要将这些信息存储在 web.config 中。利用明文存储这些敏感信息是不明智的,这就需要加密。

利用 aspnet_regiis 对 web.config 加密

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727>aspnet_regiis -pef connectionStrin
gs E:/wwwroot -prov DataProtectionConfigurationProvider

-pef 指定两个参数:

  • 这里 connectionStrings 是要进行加密的配置节,如果配置节不是根元素则就指定路径,如:父配置节/子配置节。
  • 这里 E:/wwwroot 是要加密的配置文件所在的物理目录。

-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG 的位置,我们可以找到 machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。这两个驱动是 RsaProtectedConfigurationProvider(类名 RsaProtectedConfigurationProvider)和 DataProtectionConfigurationProvider(类名 DpapiProtectedConfigurationProvider)。

  • RsaProtectedConfigurationProvider RSA 加密,公钥/私钥均存储在配置文件中,移植方便。
  • DataProtectionConfigurationProvider 使用 Windows 内置的加密服务,密钥由 LSASS.EXE 管理,无法移植。通过设置可以限定是只能某个帐户可以使用加密的数据,还是 Windows 中所有帐户均可使用。

你也可以用你自己的加密算法,具体请参见 MSDN 的实现受保护配置提供程序

加密后,如何应用?

应用上没有变化,在获取这些加密的配置节数据时会自动对其解密。

要修改加密后的配置节内容怎么办呢。三种方法:一是对未加密的 web.config 备份进行修改,然后再加密覆盖之;二是使用 -pdf(注意不是 -pef)进行解密,再修改,再加密。注意,要对 DataProtectionConfigurationProvider 加密的配置文件进行解密,只能在加密的机器上进行;三是利用 IIS 中集成的 ASP.NET 编辑,该编辑时采用的明文,但保存时自动确定是采用密文还是明文,非常方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值